NET_KSTAT_CREATE(9F)    Kernel Functions for Drivers    NET_KSTAT_CREATE(9F)
NAME
       net_kstat_create - create and initialize a new kstat for a specific
       instance of IP
SYNOPSIS
       #include <sys/types.h>
       #include <sys/kstat.h>
       #include <sys/neti.h>       
kstat_t *
net_kstat_create(
netid_t netid, 
char *
module,            
int instance, 
char *
name, 
char *
class, 
uchar_type type,            
ulong_t ndata, 
uchar_t ks_flag);
INTERFACE LEVEL
       illumos DDI specific (illumos DDI).
PARAMETERS
       netid                   IP instance identifier.       
module                   The name of the provider's module (such as "
sd", "
esp",
                   ...). The "
core" kernel uses the name "unix".       
instance                   The provider's instance number, as from                   
ddi_get_instance(9F). Modules which do not have a
                   meaningful instance number should use 
0.       
name                   A pointer to a string that uniquely identifies this
                   structure. Only 
KSTAT_STRLEN - 1 characters are
                   significant.       
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.       
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       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 combination of:                   
KSTAT_FLAG_VIRTUAL                       Tells 
kstat_create() 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 root.                   
KSTAT_FLAG_PERSISTENT                       Indicates that this 
kstat is to be persistent over
                       time. For persistent 
kstats, 
kstat_delete(9F) simply
                       marks the 
kstat as dormant; a subsequent                       
kstat_create() reactivates 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.
DESCRIPTION
       The 
net_kstat_create() function allocates and initializes a 
kstat(9S)       structure. See 
kstat_create(9F) for a complete discussion of this
       function.
RETURN VALUES
       If successful, 
net_kstat_create() returns a pointer to the allocated       
kstat. 
NULL is returned upon failure.
CONTEXT
       The 
net_kstat_create() function may be called from user or kernel
       context.
ATTRIBUTES
       See 
attributes(7) for descriptions of the following attributes:
       +--------------------+-----------------+
       |  ATTRIBUTE TYPE    | ATTRIBUTE VALUE |
       +--------------------+-----------------+
       |Interface Stability | Committed       |
       +--------------------+-----------------+
SEE ALSO
       ddi_get_instance(9F), 
kstat_create(9F), 
kstat_delete(9F),       
net_kstat_delete(9F), 
hook_t(9S), 
kstat_named(9S)                                 May 1, 2008            NET_KSTAT_CREATE(9F)