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,
       defined as di_node_t in the libdevinfo interfaces. Each di_node_t  rep‐
       resents  a physical or logical (pseudo) device. The types of data asso‐
       ciated 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
       attributes 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
       returned. 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
       interface  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
       obtained  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
       driver  using this abstraction is scsi_vhci(4D). In such cases, devices
       are not directly represented as children of their  physical  host  con‐
       troller  interface  (pHCI)  bus adapter. Instead, devices have an iden‐
       tity-oriented 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
       represented 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
       device tree.


       An alternative way to traverse the device  tree  is  through  the  per-
       driver  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  suc‐
       cessive   calls  to  di_drv_next_node(3DEVINFO)  until  DI_NODE_NIL  is
       returned. Traversing 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
       Device Drivers in Oracle Solaris 11.4  for  information  about  Solaris
       device configuration.

INTERFACES
       The  shared  object  libdevinfo.so.1  provides  the  public  interfaces
       defined 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_driver_opsdi_drv_first_node                  di_drv_next_nodedi_fini
       di_initdi_instance            di_link_next_by_lnodedi_link_next_by_node
       di_link_private_getdi_link_private_set di_link_spectypedi_link_to_lnode
       di_lnode_devinfodi_lnode_devt  di_lnode_namedi_lnode_next di_lnode_pri‐
       vate_getdi_lnode_private_set                 di_minor_devtdi_minor_name
       di_minor_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_lnodedi_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),
       attributes(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