libdevinfo(3lib) 맨 페이지 - 윈디하나의 솔라나라

개요

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

libdevinfo(3lib)

libdevinfo(3LIB)              Interface Libraries             libdevinfo(3LIB)

NAME
       libdevinfo - device information library

SYNOPSIS
       cc [ flag... ] file... -ldevinfo [ library... ]
       #include <libdevinfo.h>

DESCRIPTION
       Functions in this library access device configuration information.


       Device  configuration  data is organized as a tree of device nodes, de‐
       fined as di_node_t in the libdevinfo interfaces. Each di_node_t  repre‐
       sents  a physical or logical (pseudo) device. The types of data associ‐
       ated with device nodes are:

           o      data defined for all device nodes (attributes)


           o      data defined for all multipath path nodes


           o      data defined for all minor node data


           o      properties specific to nodes



       All device nodes have a set of common attributes, such as a node  name,
       an  instance  number, and a driver binding name. Common device node at‐
       tributes are accessed by calling  interfaces  listed  on  the  di_bind‐
       ing_name(3DEVINFO)  manual  page.  Each device node also has a physical
       path, which is accessed by calling di_devfs_path(3DEVINFO).


       Properties provide device specific information for device configuration
       and usage. Properties can be defined  by  software  (di_prop_t)  or  by
       firmware  (di_prom_prop_t). One way to access each di_prop_t is to make
       successive calls to di_prop_next(3DEVINFO)  until  DI_PROP_NIL  is  re‐
       turned.  For  each di_prop_t, use interfaces on the di_prop_bytes(3DEV‐
       INFO) manual page to obtain property names and values. Another  way  to
       access  these  properties  is to call di_prop_lookup_bytes(3DEVINFO) to
       find  the  value  of  a  property  with  a  given  name.  Accessing   a
       di_prom_prop_t is similar to accessing a di_prop_t, except that the in‐
       terface   names   start  with  di_prom_prop  and  additional  calls  to
       di_prom_init(3DEVINFO) and di_prom_fini(3DEVINFO) are required.


       Minor nodes contain information exported by  the  device  for  creating
       special  files  for  the  device.  Each device node has 0 or more minor
       nodes associated with it. A list of minor nodes (di_minor_t) can be ob‐
       tained by making  successive  calls  to  di_minor_next(3DEVINFO)  until
       DI_MINOR_NIL  is returned. For each minor node, di_minor_devt(3DEVINFO)
       and related interfaces are called to get minor node data.


       In some configurations, multipath device access via a virtual host con‐
       troller interface (vHCI) abstraction is possible. An example of a  dri‐
       ver using this abstraction is scsi_vhci(4D). In such cases, devices are
       not  directly represented as children of their physical host controller
       interface (pHCI) bus adapter. Instead, devices  have  an  identity-ori‐
       ented  representation  as  a  child of a vHCI. All paths leading to the
       same identity are represented by a common child endpoint  of  the  vHCI
       called  the "client" device node. The vHCI virtualizes access among the
       underlying pHCI physical paths. The underlying connection between vHCI-
       managed client endpoints and the pHCI paths to that endpoint is  repre‐
       sented by a class of nodes called "path" nodes (di_path_t).


       Each  path  node  is  associated with two device nodes: its pHCI device
       node, and its client device node. A list of  paths  associated  with  a
       specific     pHCI     device     node    can    be    obtained    using
       di_path_phci_next_path(3DEVINFO), and a list of paths associated with a
       specific    client    device    node    can    be    obtained     using
       di_path_client_next_path(3DEVINFO).  These functions return DI_PATH_NIL
       when the end of the list of path nodes is reached.


       For each path node, di_path_state(3DEVINFO) and related interfaces  are
       called to get path node data.


       Using libdevinfo involves three steps:

           o      Creating a snapshot of the device tree


           o      Traversing the device tree to get information of interest


           o      Destroying the snapshot of the device tree



       A  snapshot  of the device tree is created by calling di_init(3DEVINFO)
       and destroyed by calling di_fini(3DEVINFO). An application can  specify
       the  data to be included in the snapshot (full or partial tree, include
       or exclude properties and minor nodes) and get a handle to the root  of
       the  device  tree.  See  di_init(3DEVINFO) for details. The application
       then traverses the device tree in the snapshot to obtain device config‐
       uration data.


       The device tree  is  normally  traversed  through  parent-child-sibling
       linkage.  Each  device node contains references to its parent, its next
       sibling, and the first of its children. Given  the  di_node_t  returned
       from   di_init(),   one   can   find  all  children  by  first  calling
       di_child_node(3DEVINFO),  followed  by  successive  calls  to   di_sib‐
       ling_node(3DEVINFO)  until  DI_NODE_NIL  is returned. By following this
       procedure recursively, an application can visit all device  nodes  con‐
       tained  in  the snapshot. Two interfaces,The di_walk_node(3DEVINFO) and
       di_walk_minor(3DEVINFO) functions are  provided  to  facilitate  device
       tree traversal. The di_walk_node() function visits all device nodes and
       executes  a  user-supplied callback function for each node visited. The
       di_walk_minor() function does the same for each minor node in  the  de‐
       vice tree.


       An  alternative way to traverse the device tree is through the per-dri‐
       ver device node linkage. Device nodes contain a reference to  the  next
       device node bound to the same driver. Given the di_node_t returned from
       di_init(),  an  application can find all device nodes bound to a driver
       by first calling di_drv_first_node(3DEVINFO),  followed  by  successive
       calls to di_drv_next_node(3DEVINFO) until DI_NODE_NIL is returned. Tra‐
       versing  the  per-driver  device node list works only when the snapshot
       includes all device nodes.


       See di_init(3DEVINFO) for examples of libdevinfo usage. See Writing De‐
       vice Drivers in Oracle Solaris 11.4 for information about  Solaris  de‐
       vice configuration.

INTERFACES
       The  shared  object  libdevinfo.so.1 provides the public interfaces de‐
       fined below. See intro(3) for additional information on  shared  object
       interfaces.

       tab();       lw(2.75i)       lw(2.75i)       di_binding_namedi_bus_addr
       di_child_nodedi_compatible_names       di_devfs_minor_pathdi_devfs_path
       di_devfs_path_freedi_devid     di_driver_majordi_driver_name    di_dri‐
       ver_opsdi_drv_first_node   di_drv_next_nodedi_fini   di_initdi_instance
       di_link_next_by_lnodedi_link_next_by_node                  di_link_pri‐
       vate_getdi_link_private_set   di_link_spectypedi_link_to_lnode   di_ln‐
       ode_devinfodi_lnode_devt    di_lnode_namedi_lnode_next    di_lnode_pri‐
       vate_getdi_lnode_private_set     di_minor_devtdi_minor_name      di_mi‐
       nor_nextdi_minor_nodetype      di_minor_private_getdi_minor_private_set
       di_minor_spectypedi_minor_type          di_node_namedi_node_private_get
       di_node_private_setdi_nodeid             di_parent_nodedi_path_bus_addr
       di_path_client_devfs_pathdi_path_client_next_path
       di_path_client_nodedi_path_devfs_path di_path_instancedi_path_node_name
       di_path_phci_next_pathdi_path_phci_node
       di_path_prop_bytesdi_path_prop_int64s di_path_prop_intsdi_path_prop_len
       di_path_prop_lookup_bytesdi_path_prop_lookup_int64s
       di_path_prop_lookup_intsdi_path_prop_lookup_strings
       di_path_prop_namedi_path_prop_strings
       di_path_prop_nextdi_path_prop_type            di_path_statedi_prom_fini
       di_prom_initdi_prom_prop_data
       di_prom_prop_lookup_bytesdi_prom_prop_lookup_ints
       di_prom_prop_lookup_stringsdi_prom_prop_name
       di_prom_prop_nextdi_prop_bytes                di_prop_devtdi_prop_int64
       di_prop_intsdi_prop_lookup_bytes
       di_prop_lookup_int64di_prop_lookup_ints
       di_prop_lookup_stringsdi_prop_name          di_prop_nextdi_prop_strings
       di_prop_typedi_sibling_node       di_statedi_walk_link      di_walk_ln‐
       odedi_walk_minor di_walk_node


EXAMPLES
       Example 1 Information accessible through libdevinfo interfaces



       The following example illustrates the kind  of  information  accessible
       through  libdevinfo  interfaces  for  a device node representing a hard
       disk (sd2):


         Attributes
             node name:  sd
             instance:   5
             physical path:  /pci@400/pci@1/pci@0/pci@4/scsi@0/iport@1/disk@w5000cca0153966b9,0

         Properties
             target=2
             lun=0

         Minor nodes
             (disk partition /dev/dsk/c0t5000CCA0153966B8d0s0)
                 name:       a
                 spectype:   IF_BLK (block special)
             (disk partition /dev/rdsk/c0t5000CCA0153966B8d0s2)
                 name:       c,raw
                 spectype:   IF_CHR (character special)



FILES
       /lib/libdevinfo.so.1

           shared object


       /usr/lib/64/libdevinfo.so.1

           64-bit shared object


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 _ Availabilitysystem/library _ Interface StabilityCommit‐
       ted _ MT-LevelSafe


SEE ALSO
       pvs(1),        di_walk_node(3DEVINFO),       di_binding_name(3DEVINFO),
       di_child_node(3DEVINFO),  di_devfs_path(3DEVINFO),   di_init(3DEVINFO),
       di_minor_devt(3DEVINFO),                       di_minor_next(3DEVINFO),
       di_path_bus_addr(3DEVINFO),         di_path_client_next_path(3DEVINFO),
       di_path_prop_bytes(3DEVINFO),      di_path_prop_lookup_bytes(3DEVINFO),
       di_path_prop_next(3DEVINFO),                    di_prom_init(3DEVINFO),
       di_prop_bytes(3DEVINFO),                di_prop_lookup_bytes(3DEVINFO),
       di_prop_next(3DEVINFO),  di_walk_minor(3DEVINFO),   intro(3),   attrib‐
       utes(7), devlinks(8), prtconf(8)


       Writing Device Drivers in Oracle Solaris 11.4

Oracle Solaris 11.4               15 Nov 2016                 libdevinfo(3LIB)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3