kstat_create(9f) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨 페이지 이름
검색(S)

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)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3