kstat_create man page on SmartOS

Man page or keyword search:  
man Server   16655 pages
apropos Keyword Search (all sections)
Output format
SmartOS logo
[printable version]

KSTAT_CREATE(9F)					      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
		      ddi_get_instance(9F).  Modules which do not have a mean‐
		      ingful instance number should use 0.

       ks_name
		      A pointer to a  string  that  uniquely  identifies  this
		      structure. Only KSTAT_STRLEN − 1 characters are signifi‐
		      cant.

       ks_class
		      The general class that this kstat belongs to.  The  fol‐
		      lowing  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 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 subse‐
					       quent  kstat_create()   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.

DESCRIPTION
       kstat_create()  is  used in conjunction with kstat_install(9F) to allo‐
       cate 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, ini‐
       tializes 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.

RETURN VALUES
       If successful, kstat_create() returns a pointer to the allocated kstat.
       NULL is returned upon failure.

CONTEXT
       kstat_create() 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);
	    }

SEE ALSO
       kstat(3KSTAT),	       ddi_get_instance(9F),	     kstat_delete(9F),
       kstat_install(9F), kstat_named_init(9F), kstat(9S), kstat_named(9S)

       Writing Device Drivers

				 Nov 13, 2006		      KSTAT_CREATE(9F)
[top]

List of man pages available for SmartOS

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net