svcadm(8)을 검색하려면 섹션에서 8 을 선택하고, 맨 페이지 이름에 svcadm을 입력하고 검색을 누른다.
kstat_create(9f)
kstat_create(9F) Kernel Functions kstat_create(9F)
NAME
kstat_create - create and initialize a new kstat
SYNOPSIS
#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);
INTERFACE LEVEL
Solaris DDI specific (Solaris DDI)
PARAMETERS
ks_module
The name of the provider's module (such as "sd", "esp", ...). The
"core" kernel uses the name "unix".
ks_instance
The provider's instance number, as from the ddi_get_instance()
function. Modules which do not have a meaningful instance number
should use 0. For more information, see the ddi_get_instance(9F)
man page.
ks_name
A pointer to a string that uniquely identifies this structure. Only
KSTAT_STRLEN − 1 characters are significant.
ks_class
The general class that this kstat belongs to. The following classes
are currently in use: disk, tape, net, controller, vm, kvm, hat,
streams, kstat, and misc.
ks_type
The type of kstat to allocate. Valid types are:
KSTAT_TYPE_NAMED Allows more than one data record per kstat.
KSTAT_TYPE_INTR Interrupt; only one data record per kstat.
KSTAT_TYPE_IO I/O; only one data record per kstat
ks_ndata
The number of type-specific data records to allocate.
ks_flag
A bit-field of various flags for this kstat. ks_flag is some combi‐
nation of:
KSTAT_FLAG_VIRTUAL
Tells kstat_create() function not to allocate memory for the
kstat data section; instead, the driver will set the ks_data
field to point to the data it wishes to export. This provides a
convenient way to export existing data structures.
KSTAT_FLAG_WRITABLE
Makes the kstat data section writable by processes with the
{PRIV_SYS_CONFIG} privilege.
KSTAT_FLAG_PERSISTENT
Indicates that this kstat is to be persistent over time. For
persistent kstats, the kstat_delete() function simply marks the
kstat as dormant, a subsequent kstat_create() function reacti‐
vates the kstat. This feature is provided so that statistics
are not lost across driver close/open (such as raw disk I/O on
a disk with no mounted partitions.) Note: Persistent kstats
cannot be virtual, since ks_data points to garbage as soon as
the driver goes away. For more information, see the
kstat_delete(9F) man page.
DESCRIPTION
The kstat_create() function is used in conjunction with the
kstat_install() function to allocate and initialize a kstat(9S) struc‐
ture. For more information, see the kstat_install(9F) man page. The
method of allocation is generally as follows:
The kstat_create() function allocates and performs necessary system
initialization of a kstat(9S) structure. The kstat_create() function
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 (call‐
er) has not yet had a chance to initialize the data section.
After a successful call to the 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, the kstat_install() function
is used to make the kstat accessible to the outside world. For more
information, see the kstat_install(9F) man page.
RETURN VALUES
If successful, the kstat_create() function returns a pointer to the
allocated kstat. NULL is returned upon failure.
CONTEXT
The kstat_create() function can be called from user or kernel context.
EXAMPLES
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);
}
ATTRIBUTES
See attributes(7) for descriptions of the following attributes:
tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) ATTRIBUTE TYPEAT‐
TRIBUTE VALUE _ Interface StabilityObsolete
SEE ALSO
kstat(3KSTAT), privileges(7), ddi_get_instance(9F), kstat_delete(9F),
kstat_install(9F), kstat_named_init(9F), kstat(9S), kstat_named(9S),
kstat2_create(9F), kstat2_delete(9F), kstat2_install(9F)
Writing Device Drivers in Oracle Solaris 11.4
NOTES
The use of the kstat_create() function is deprecated. The function may
be removed in a future release of Oracle Solaris. Use the kstat2_cre‐
ate() function instead. For more information, refer to the kstat2_cre‐
ate(9F) man page.
Oracle Solaris 11.4 3 Nov 2021 kstat_create(9F)