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_descr_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
                      descriptors.  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
                             instance is set up to represent an entire  physi‐
                             cal    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
       offer.

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