ddi_prop_create man page on OpenIndiana

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

ddi_prop_create(9F)	 Kernel Functions for Drivers	   ddi_prop_create(9F)

NAME
       ddi_prop_create, ddi_prop_modify, ddi_prop_remove, ddi_prop_remove_all,
       ddi_prop_undefine - create,  remove,  or	 modify	 properties  for  leaf
       device drivers

SYNOPSIS
       #include <sys/conf.h>
       #include <sys/ddi.h>
       #include <sys/sunddi.h>

       int ddi_prop_create(dev_t dev, dev_info_t *dip, int flags,
	    char *name, caddr_t valuep, int length);

       int ddi_prop_undefine(dev_t dev, dev_info_t *dip, int flags,
	    char *name);

       int ddi_prop_modify(dev_t dev, dev_info_t *dip, int flags,
	    char *name, caddr_t valuep, int length);

       int ddi_prop_remove(dev_t dev, dev_info_t *dip, char *name);

       void ddi_prop_remove_all(dev_info_t *dip);

INTERFACE LEVEL
       Solaris	 DDI   specific	  (Solaris  DDI).  The	ddi_prop_create()  and
       ddi_prop_modify()  functions  are  obsolete.  Use   ddi_prop_update(9F)
       instead of these functions.

PARAMETERS
       ddi_prop_create()

       dev	 dev_t of the device.

       dip	 dev_info_t pointer of the device.

       flags	 flag	modifiers.   The   only	  possible   flag   value   is
		 DDI_PROP_CANSLEEP: Memory allocation may sleep.

       name	 name of property.

       valuep	 pointer to property value.

       length	 property length.

       ddi_prop_undefine()

       dev	dev_t of the device.

       dip	dev_info_t pointer of the device.

       flags	flag   modifiers.   The	  only	 possible   flag   value    is
		DDI_PROP_CANSLEEP: Memory allocation may sleep.

       name	name of property.

       ddi_prop_modify()

       dev	 dev_t of the device.

       dip	 dev_info_t pointer of the device.

       flags	 flag	modifiers.   The   only	  possible   flag   value   is
		 DDI_PROP_CANSLEEP: Memory allocation may sleep.

       name	 name of property.

       valuep	 pointer to property value.

       length	 property length.

       ddi_prop_remove()

       dev     dev_t of the device.

       dip     dev_info_t pointer of the device.

       name    name of property.

       ddi_prop_remove_all()

       dip    dev_info_t pointer of the device.

DESCRIPTION
       Device drivers have the ability to create and manage their own  proper‐
       ties  as	 well  as gain access to properties that the system creates on
       behalf of the driver. A driver uses ddi_getproplen(9F) to query whether
       or not a specific property exists.

       Property	 creation is done by creating a new property definition in the
       driver's property list associated with dip.

       Property definitions are stacked; they are added to  the	 beginning  of
       the  driver's  property list when created. Thus, when searched for, the
       most recent matching property definition will be found  and  its	 value
       will be return to the caller.

       The individual functions are described as follows:

       ddi_prop_create()	ddi_prop_create()   adds  a  property  to  the
				device's property list. If the property is not
				associated  with  any  particular  dev	but is
				associated with the  physical  device  itself,
				then  the  argument  dev should be the special
				device DDI_DEV_T_NONE. If you do  not  have  a
				dev   for  your	 device	 (for  example	during
				attach(9E) time), you  can  create  one	 using
				makedevice(9F)	 with	a   major   number  of
				DDI_MAJOR_T_UNKNOWN.  ddi_prop_create()	  will
				then make the correct dev for your device.

				For boolean properties, you must set length to
				0. For all other properties, the length	 argu‐
				ment  must  be set to the number of bytes used
				by the data structure representing  the	 prop‐
				erty being created.

				Note  that  creating a property involves allo‐
				cating memory for the property list, the prop‐
				erty  name  and	 the  property value. If flags
				does	not	contain	    DDI_PROP_CANSLEEP,
				ddi_prop_create()  returns  DDI_PROP_NO_MEMORY
				on memory allocation failure or	 DDI_PROP_SUC‐
				CESS   if   the	  allocation   succeeded.   If
				DDI_PROP_CANSLEEP  was	set,  the  caller  may
				sleep until memory becomes available.

       ddi_prop_undefine()	ddi_prop_undefine() is a special case of prop‐
				erty creation where the value of the  property
				is  set	 to  undefined.	 This property has the
				effect of terminating a property search at the
				current devinfo node, rather than allowing the
				search	to  proceed  up	 to  ancestor  devinfo
				nodes.	However,  ddi_prop_undefine() will not
				terminate     a	     search	 when	   the
				ddi_prop_get_int(9F)   or  ddi_prop_lookup(9F)
				routines are used for lookup of	 64-bit	 prop‐
				erty value. See ddi_prop_op(9F).

				Note  that  undefining properties does involve
				memory allocation, and therefore,  is  subject
				to  the	 same memory allocation constraints as
				ddi_prop_create().

       ddi_prop_modify()	ddi_prop_modify() modifies the length and  the
				value  of  a  property.	 If  ddi_prop_modify()
				finds the property in  the  driver's  property
				list,  allocates memory for the property value
				and returns DDI_PROP_SUCCESS. If the  property
				was    not   found,   the   function   returns
				DDI_PROP_NOT_FOUND.

				Note that modifying  properties	 does  involve
				memory	allocation,  and therefore, is subject
				to the same memory allocation  constraints  as
				ddi_prop_create().

       ddi_prop_remove()	ddi_prop_remove()  unlinks a property from the
				device's property list.	 If  ddi_prop_remove()
				finds  the  property  (an  exact match of both
				nameand dev), it unlinks the  property,	 frees
				its memory, and returns DDI_PROP_SUCCESS, oth‐
				erwise, it returns DDI_PROP_NOT_FOUND.

       ddi_prop_remove_all()	ddi_prop_remove_all() removes  the  properties
				of all the dev_t's associated with the dip. It
				is called before unloading a driver.

RETURN VALUES
       The ddi_prop_create() function returns the following values:

       DDI_PROP_SUCCESS	     On success.

       DDI_PROP_NO_MEMORY    On memory allocation failure.

       DDI_PROP_INVAL_ARG    If an attempt is made to create a	property  with
			     dev  equal to DDI_DEV_T_ANY or if name is NULL or
			     name is the NULL string.

       The ddi_prop_ undefine() function returns the following values:

       DDI_PROP_SUCCESS	     On success.

       DDI_PROP_NO_MEMORY    On memory allocation failure.

       DDI_PROP_INVAL_ARG    If an attempt is made to create a	property  with
			     dev  DDI_DEV_T_ANY	 or if name is NULL or name is
			     the NULL string.

       The ddi_prop_modify() function returns the following values:

       DDI_PROP_SUCCESS	     On success.

       DDI_PROP_NO_MEMORY    On memory allocation failure.

       DDI_PROP_INVAL_ARG    If an attempt is made to create a	property  with
			     dev  equal to DDI_DEV_T_ANY or if name is NULL or
			     name is the NULL string.

       DDI_PROP_NOT_FOUND    On property search failure.

       The ddi_prop_remove() function returns the following values:

       DDI_PROP_SUCCESS	     On success.

       DDI_PROP_INVAL_ARG    If an attempt is made to create a	property  with
			     dev  equal to DDI_DEV_T_ANY or if name is NULL or
			     name is the NULL string.

       DDI_PROP_NOT_FOUND    On property search failure.

CONTEXT
       If DDI_PROP_CANSLEEP is set, these functions can cannot be called  from
       interrupt  context. Otherwise, they can be called from user, interrupt,
       or kernel context.

EXAMPLES
       Example 1 Creating a Property

       The following example creates a property called nblocks for each parti‐
       tion on a disk.

	 int propval = 8192;

	 for (minor = 0; minor < 8; minor ++) {
		 (void) ddi_prop_create(makedevice(DDI_MAJOR_T_UNKNOWN, minor),
		     dev, DDI_PROP_CANSLEEP, "nblocks", (caddr_t) &propval,
		     sizeof (int));
		     ...
	 }

ATTRIBUTES
       See attributes(5) for a description of the following attributes:

       ┌────────────────────────────┬──────────────────────────────┐
       │      ATTRIBUTE TYPE	    │	    ATTRIBUTE VALUE	   │
       ├────────────────────────────┼──────────────────────────────┤
       │Stability Level		    │ ddi_prop_create()	       and │
       │			    │ ddi_prop_modify() are  Obso‐ │
       │			    │ lete			   │
       └────────────────────────────┴──────────────────────────────┘

SEE ALSO
       driver.conf(4),	  attributes(5),    attach(9E),	   ddi_getproplen(9F),
       ddi_prop_op(9F), ddi_prop_update(9F), makedevice(9F)

       Writing Device Drivers

SunOS 5.11			  16 Jan 2006		   ddi_prop_create(9F)
[top]

List of man pages available for OpenIndiana

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