KSTAT_CREATE(9F) | Kernel Functions for Drivers | KSTAT_CREATE(9F) |
kstat_create - create and initialize a new kstat
#include <sys/types.h> #include <sys/kstat.h> kstat_t *kstat_create(const char *ks_module, int ks_instance,
const char *ks_name, const char *ks_class, uchar_t ks_type,
ulong_t ks_ndata, uchar_t ks_flag);
illumos DDI specific (illumos DDI)
ks_module
ks_instance
ks_name
ks_class
ks_type
KSTAT_TYPE_RAW
KSTAT_TYPE_NAMED
KSTAT_TYPE_INTR
KSTAT_TYPE_IO
KSTAT_TYPE_TIMER
ks_ndata
ks_flag
KSTAT_FLAG_VIRTUAL
KSTAT_FLAG_WRITABLE
KSTAT_FLAG_PERSISTENT
kstat_create() is used in conjunction with kstat_install(9F) to allocate and initialize a kstat(9S) structure. The method is generally as follows:
kstat_create() allocates and performs necessary system initialization of a kstat(9S) structure. kstat_create() allocates memory for the entire kstat (header plus data), initializes all header fields, initializes the data section to all zeroes, assigns a unique kstat ID (KID), and puts the kstat onto the system's kstat chain. The returned kstat is marked invalid because the provider (caller) has not yet had a chance to initialize the data section.
After a successful call to kstat_create() the driver must perform any necessary initialization of the data section (such as setting the name fields in a kstat of type KSTAT_TYPE_NAMED). Virtual kstats must have the ks_data field set at this time. The provider may also set the ks_update, ks_private, and ks_lock fields if necessary.
Once the kstat is completely initialized, kstat_install(9F) is used to make the kstat accessible to the outside world.
If successful, kstat_create() returns a pointer to the allocated kstat. NULL is returned upon failure.
kstat_create() can be called from user or kernel context.
Example 1 Allocating and Initializing a kstat Structure
pkstat_t *ksp;
ksp = kstat_create(module, instance, name, class, type, ndata, flags);
if (ksp) {
/* ... provider initialization, if necessary */
kstat_install(ksp);
}
kstat(3KSTAT), ddi_get_instance(9F), kstat_delete(9F), kstat_install(9F), kstat_named_init(9F), kstat(9S), kstat_named(9S)
Writing Device Drivers
September 7, 2015 | OmniOS |