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

개요

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

ddi_prop_lookup(9f)

ddi_prop_lookup(9F)            Kernel Functions            ddi_prop_lookup(9F)

NAME
       ddi_prop_lookup,  ddi_prop_lookup_int_array,  ddi_prop_lookup_int64_ar‐
       ray,       ddi_prop_lookup_string_array,        ddi_prop_lookup_string,
       ddi_prop_lookup_byte_array,  ddi_prop_free  - look up property informa‐
       tion

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

       int ddi_prop_lookup_int_array(dev_t match_dev, dev_info_t *dip,
            uint_t flags, char *name, int **datap, uint_t *nelementsp);


       int ddi_prop_lookup_int64_array(dev_t match_dev, dev_info_t *dip,
            uint_t flags, char *name, int64_t **datap, uint_t *nelementsp);


       int ddi_prop_lookup_string_array(dev_t match_dev, dev_info_t *dip,
            uint_t flags, char *name, char ***datap, uint_t *nelementsp);


       int ddi_prop_lookup_string(dev_t match_dev, dev_info_t *dip, uint_t flags,
            char *name, char **datap);


       int ddi_prop_lookup_byte_array(dev_t match_dev, dev_info_t *dip,
            uint_t flags, char *name, uchar_t **datap, uint_t *nelementsp);


       void ddi_prop_free(void *data);

PARAMETERS
       match_dev

           Device number associated with property or DDI_DEV_T_ANY.


       dip

           Pointer to the device info  node  of  device  whose  property  list
           should be searched.


       flags

           Possible flag values are some combination of:

           DDI_PROP_DONTPASS

               Do  not  pass  request to parent device information node if the
               property is not found.


           DDI_PROP_NOTPROM

               Do not look at PROM properties (ignored on  platforms  that  do
               not support PROM properties).



       name

           String containing the name of the property.


       nelementsp

           The  address  of an unsigned integer which, upon successful return,
           will contain the number of elements accounted  for  in  the  memory
           pointed  at  by datap. The elements are either integers, strings or
           bytes depending on the interface used.


       datap


           ddi_prop_lookup_int_array()

               The address of a pointer to an array of  integers  which,  upon
               successful  return, will point to memory containing the integer
               array property value.


           ddi_prop_lookup_int64_array()

               The address of a pointer to an array of 64-bit integers  which,
               upon successful return, will point to memory containing the in‐
               teger array property value.


           ddi_prop_lookup_string_array()

               The  address  of  a  pointer to an array of strings which, upon
               successful return, will point to memory containing the array of
               strings. The array of strings  is  formatted  as  an  array  of
               pointers  to  NULL terminated strings, much like the argv argu‐
               ment to execve(2).


           ddi_prop_lookup_string()

               The address of a pointer to a string which, upon successful re‐
               turn, will point  to  memory  containing  the  NULL  terminated
               string value of the property.


           ddi_prop_lookup_byte_array()

               The  address  of  pointer to an array of bytes which, upon suc‐
               cessful return, will point to memory containing the byte  array
               value of the property.



INTERFACE LEVEL
       Solaris DDI specific (Solaris DDI).

DESCRIPTION
       The  property  look  up  routines  search for and, if found, return the
       value of a given property. Properties are searched  for  based  on  the
       dip,  name,  match_dev,  and  the type of the data (integer, string, or
       byte). The property search order is as follows:

           1.     Search software properties created by the driver.


           2.     Search the software properties created  by  the  system  (or
                  nexus nodes in the device info tree).


           3.     Search the driver global properties list.


           4.     If  DDI_PROP_NOTPROM  is not set, search the PROM properties
                  (if they exist).


           5.     If DDI_PROP_DONTPASS is not set, pass this  request  to  the
                  parent device information node.


           6.     Return DDI_PROP_NOT_FOUND.




       Usually, the match_dev argument should be set to the actual device num‐
       ber  that  this  property is associated with. However, if the match_dev
       argument is DDI_DEV_T_ANY, the property look up routines will match the
       request regardless of the actual match_dev  the  property  was  created
       with.  If  a property was created with match_dev set to DDI_DEV_T_NONE,
       then the only way to look up this property is with a match_dev  set  to
       DDI_DEV_T_ANY. PROM properties are always created with match_dev set to
       DDI_DEV_T_NONE.


       name must always be set to the name of the property being looked up.


       For the routines ddi_prop_lookup_int_array(), ddi_prop_lookup_int64_ar‐
       ray(),  ddi_prop_lookup_string_array(),  ddi_prop_lookup_string(),  and
       ddi_prop_lookup_byte_array(), datap is the address of a pointer  which,
       upon  successful  return,  will point to memory containing the value of
       the property. In each case *datap points to a different type  of  prop‐
       erty  value.  See the individual descriptions of the routines below for
       details on the different return values. nelementsp is the address of an
       unsigned integer which, upon successful return, will contain the number
       of integer, string or byte elements accounted for in the memory pointed
       at by *datap.


       All of the property look up  routines  may  block  to  allocate  memory
       needed to hold the value of the property.


       When  a  driver has obtained a property with any look up routine and is
       finished  with  that  property,   it   must   be   freed   by   calling
       ddi_prop_free(). ddi_prop_free() must be called with the address of the
       allocated property. For instance, if one called ddi_prop_lookup_int_ar‐
       ray()  with  datap  set  to  the  address  of  a pointer to an integer,
       &my_int_ptr,    then    the    companion    free    call    would    be
       ddi_prop_free(my_int_ptr).

       ddi_prop_lookup_int_array()

           This  routine searches for and returns an array of integer property
           values. An array of integers is defined to *nelementsp number of  4
           byte long integer elements. datap should be set to the address of a
           pointer to an array of integers which, upon successful return, will
           point to memory containing the integer array value of the property.


       ddi_prop_lookup_int64_array()

           This  routine  searches  for and returns an array of 64-bit integer
           property values. The array is defined to be *nelementsp  number  of
           int64_t  elements.  datap should be set to the address of a pointer
           to an array of int64_t's which, upon successful return, will  point
           to  memory containing the integer array value of the property. This
           routine will not search the PROM for 64-bit property values.


       ddi_prop_lookup_string_array()

           This routine searches for and returns a property that is  an  array
           of strings. datap should be set to address of a pointer to an array
           of strings which, upon successful return, will point to memory con‐
           taining  the array of strings. The array of strings is formatted as
           an array of pointers to null-terminated strings, much like the argv
           argument to execve(2).


       ddi_prop_lookup_string()

           This routine searches for and returns a property that  is  a  null-
           terminated  string. datap should be set to the address of a pointer
           to string which, upon successful return, will point to memory  con‐
           taining the string value of the property.


       ddi_prop_lookup_byte_array()

           This  routine  searches for and returns a property that is an array
           of bytes. datap should be set to the address of a pointer to an ar‐
           ray of bytes which, upon successful return, will  point  to  memory
           containing the byte array value of the property.


       ddi_prop_free()

           Frees the resources associated with a property previously allocated
           using  ddi_prop_lookup_int_array(),  ddi_prop_lookup_int64_array(),
           ddi_prop_lookup_string_array(),    ddi_prop_lookup_string(),     or
           ddi_prop_lookup_byte_array().


RETURN VALUES
       The  functions  ddi_prop_lookup_int_array(),  ddi_prop_lookup_int64_ar‐
       ray(),  ddi_prop_lookup_string_array(),  ddi_prop_lookup_string(),  and
       ddi_prop_lookup_byte_array() return the following values:

       DDI_PROP_SUCCESS

           Upon success.


       DDI_PROP_INVAL_ARG

           If an attempt is made to look up a property with match_dev equal to
           DDI_DEV_T_NONE, name is NULL or name is the null string.


       DDI_PROP_NOT_FOUND

           Property not found.


       DDI_PROP_UNDEFINED

           Property explicitly not defined (see ddi_prop_undefine(9F)).


       DDI_PROP_CANNOT_DECODE

           The value of the property cannot be decoded.


CONTEXT
       These functions can be called from user or kernel context.

EXAMPLES
       Example 1 Using ddi_prop_lookup_int_array()



       The  following  example demonstrates the use of ddi_prop_lookup_int_ar‐
       ray().



         int  *options;
         int  noptions;

         /*
          * Get the data associated with the integer "options" property
          * array, along with the number of option integers
          */
              if (ddi_prop_lookup_int_array(DDI_DEV_T_ANY, xx_dip, 0,
              "options", &options, &noptions) == DDI_PROP_SUCCESS) {
              /*
              * Do "our thing" with the options data from the property
              */
              xx_process_options(options, noptions);

              /*
               * Free the memory allocated for the property data
               */
              ddi_prop_free(options);
         }


SEE ALSO
       execve(2),  ddi_prop_exists(9F),   ddi_prop_get_int(9F),   ddi_prop_re‐
       move(9F), ddi_prop_undefine(9F), ddi_prop_update(9F)


       Writing Device Drivers in Oracle Solaris 11.4

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