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

개요

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

ddi_prop_create(9f)

ddi_prop_create(9F)            Kernel Functions            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 de‐
       vice 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) in‐
       stead 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 de‐
                              vice's property list. If the property is not as‐
                              sociated with any particular dev but is  associ‐
                              ated  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 argument
                              must be set to the number of bytes used  by  the
                              data  structure  representing the property being
                              created.

                              Note that creating a property involves  allocat‐
                              ing  memory  for the property list, the property
                              name and the property value. If flags  does  not
                              contain DDI_PROP_CANSLEEP, ddi_prop_create() re‐
                              turns  DDI_PROP_NO_MEMORY  on  memory allocation
                              failure or DDI_PROP_SUCCESS  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 property 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, al‐
                              locates memory for the property  value  and  re‐
                              turns  DDI_PROP_SUCCESS. If the property was not
                              found, the function returns DDI_PROP_NOT_FOUND.

                              Note that modifying properties does involve mem‐
                              ory 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 name‐
                              and  dev),  it  unlinks  the property, frees its
                              memory, and returns DDI_PROP_SUCCESS, otherwise,
                              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(7) for a description of the following attributes:

       tab() box; cw(2.66i) |cw(2.84i) lw(2.66i) |lw(2.84i) ATTRIBUTE  TYPEAT‐
       TRIBUTE  VALUE  _ Stability LevelT{ ddi_prop_create() and ddi_prop_mod‐
       ify() are Obsolete T}


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


       Writing Device Drivers in Oracle Solaris 11.4

Oracle Solaris 11.4               16 Jan 2006              ddi_prop_create(9F)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3