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

개요

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

usb_get_dev_data(9f)

usb_get_dev_data(9F)           Kernel Functions           usb_get_dev_data(9F)

NAME
       usb_get_dev_data, usb_free_dev_data, usb_free_descr_tree, usb_print_de‐
       scr_tree - Retrieve device configuration information

SYNOPSIS
       #include <sys/usb/usba.h>

       int usb_get_dev_data(dev_info_t *dip, usb_client_dev_data_t **dev_data,
            usb_reg_parse_lvl_t parse_level, usb_flags_t flags);


       void usb_free_dev_data(dev_info_t *dip, usb_client_dev_data_t *dev_data);


       void usb_free_descr_tree(dev_info_t *dip, usb_client_dev_data_t *dev_data);


       int usb_print_descr_tree(dev_info_t *dip, usb_client_dev_data_t *dev_data);

INTERFACE LEVEL
       Solaris DDI specific (Solaris DDI)

PARAMETERS
       For usb_get_dev_data():

       dip            Pointer to device's dev_info structure.


       dev_data       Address in which pointer to info is returned.


       parse_level    Portion  of device represented in the tree of parsed de‐
                      scriptors. See below  for  possible  usb_reg_parse_lvl_t
                      values and explanations.


       flags          Not used.



       For usb_free_dev_data():

       dip         Pointer to device's dev_info structure.


       dev_data    Pointer to usb_client_dev_data_t to be freed.



       For usb_free_descr_tree():

       dip         Pointer to device's dev_info structure.


       dev_data    Pointer  to usb_client_dev_data_t containing the descriptor
                   tree to free.



       For usb_print_descr_tree():

       dip         Pointer to device's dev_info structure.


       dev_data    Pointer to usb_client_dev_data_t containing the  descriptor
                   tree to display on-screen.


DESCRIPTION
       The  usb_get_dev_data()  function interrogates a device and returns its
       configuration information in a  usb_client_dev_data_t  structure.  Most
       USBA    functions    require    information    which   comes   from   a
       usb_client_dev_data_t, and all other functions in this man page operate
       on this structure. Please see usb_client_dev_data(9S) for a  full  con‐
       tent   description.   Pass   the   usb_client_dev_data_t  structure  to
       usb_client_detach(9F) to completely deallocate it.


       A  descriptor  tree  is  included  in  the  information  returned.  The
       usb_reg_parse_lvl_t type represents the extent of the device to be rep‐
       resented  by the returned tree (2nd arg to usb_get_dev_data) or what is
       actually represented in the returned tree (dev_parse_level field of the
       returned usb_client_dev_data_t). It has the following possible values:

       USB_PARSE_LVL_NONE    Build no tree. dev_n_cfg returns 0,  dev_cfg  and
                             dev_curr_cfg   are   returned   NULL,   and   the
                             dev_curr_xxx fields are invalid.


       USB_PARSE_LVL_IF      If configuration number and interface  properties
                             are  set (as when different interfaces are viewed
                             by the OS as different device  instances),  parse
                             configured  interface  only.  If an OS device in‐
                             stance is set up to represent an entire  physical
                             device,      USB_PARSE_LVL_IF      works     like
                             USB_PARSE_LVL_ALL.


       USB_PARSE_LVL_CFG     Parse entire configuration of  configured  inter‐
                             face only. Behaves similarly to USB_PARSE_LVL_IF,
                             except that entire configuration is returned.


       USB_PARSE_LVL_ALL     Parse  entire  device  (all configurations), even
                             when driver is bound to a single interface  of  a
                             single configuration.



       The usb_free_dev_data() function undoes what usb_get_dev_data() set up.
       It  releases  memory  for all strings, descriptors, and trees set up by
       usb_get_dev_data().


       The usb_free_descr_tree() function frees the  descriptor  tree  of  its
       usb_client_dev_data_t  argument, while leaving the rest of the informa‐
       tion intact. The intent is for drivers to  free  memory  after  copying
       needed descriptor information from the tree. Upon return, the following
       usb_client_dev_data_t  fields are modified as follows: dev_cfg is NULL,
       dev_n_cfg is zero and dev_parse_level is USB_PARSE_LVL_NONE.  Addition‐
       ally, dev_curr_cfg is NULL and dev_curr_if is invalid.


       The  usb_print_descr_tree()  function  is an easy-to-use diagnostic aid
       which dumps the descriptor tree to the screen when the system  is  ver‐
       bose booted (boot  -v). Output is spaced with blank lines for readabil‐
       ity and provides you with an on-screen look at what a device has to of‐
       fer.

RETURN VALUES
       For usb_get_dev_data():

       USB_SUCCESS            Registration is successful.


       USB_INVALID_ARGS       dip or dev_data is NULL. parse_level is invalid.


       USB_INVALID_CONTEXT    Called from interrupt context.


       USB_INVALID_VERSION    usb_client_attach(9F) was not called first.


       USB_FAILURE            Bad descriptor info or other internal error.



       For usb_free_dev_data(): None


       For  usb_free_descr_tree(): None, but no operation occurs if dip and/or
       dev_data are NULL.


       For usb_print_descr_tree():

       USB_SUCCESS            Descriptor tree dump is successful.


       USB_INVALID_ARGS       dev_data or dip are NULL.


       USB_INVALID_CONTEXT    Called from interrupt context.


       USB_FAILURE            Other error.


CONTEXT
       The usb_get_dev_data()  and  usb_print_descr_tree()  functions  may  be
       called from user or kernel context.


       The  usb_free_dev_data()  and  usb_free_descr_tree()  functions  may be
       called from user, kernel or interrupt context.

EXAMPLES
         In this example, assume a device has the configuration shown
         below, and the endpoint of config 2, iface 1, alt 1
         which supports intr IN transfers needs to be found.
         Config 2, iface 1 is the "default" config/iface for the
         current OS device node.

               config 1
                   iface 0
                       endpt 0
               config 2
                   iface 0
                   iface 1
                       alt 0
                           endpt 0
                               cv 0
                       alt 1
                           endpt 0
                           endpt 1
                               cv 0
                           endpt 2
                       alt 2
                           endpt 0
                               cv 0

               usb_client_dev_data_t *dev_data;
               usb_ep_descr_t ep_descr;
               usb_ep_data_t *ep_tree_node;
               uint8_t interface = 1;
               uint8_t alternate = 1;
               uint8_t first_ep_number = 0;

               /*
                * We want default config/iface, so specify USB__PARSE_LVL_IF.
                * Default config will be returned as dev_cfg[0].
               /
                 if (usb_get_dev_data(dip, &dev_data,
                   USB_PARSE_LVL_IF, 0) != USB_SUCCESS) {
                       cmn_err (CE_WARN,
                           "%s%d: Couldn't get USB configuration descr tree",
                           ddi_driver_name(dip), ddi_get_instance(dip));

                       return (USB_FAILURE);
               }

               ep_tree_node = usb_lookup_ep_data(dip, dev_data, interface,
                    alternate, first_ep_number, USB_EP_ATTR_INTR, USB_EP_DIR_IN);
               if (ep_tree_node != NULL) {
                   ep_descr = ep_tree_node->ep_descr;
               } else {
                       cmn_r (CE_WARN,
                           "%s%d: Device is missing intr-IN endpoint",
                           ddi_driver_name(dip), ddi_get_instance(dip));

                       usb_free_descr_tree(dip, &dev_data);

                       return (USB_FAILURE);
               }



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  _  ArchitecturePCI-based systems _ Interface Stability‐
       Committed _ Availabilitysystem/io/usb


SEE ALSO
       attributes(7),        usb_parse_data(9F),        usb_client_attach(9F),
       usb_get_alt_if(9F),      usb_get_cfg(9F),     usb_get_string_descr(9F),
       usb_lookup_ep_data(9F),      usb_pipe_open(9F),      usb_cfg_descr(9S),
       usb_client_dev_data(9S),       usb_ep_descr(9S),      usb_if_descr(9S),
       usb_string_descr(9S)

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