xref: /titanic_44/usr/src/man/man3devinfo/di_binding_name.3devinfo (revision 87308b749adb04ab3f564c765b089962af3edb4d)
te
Copyright (c) 2004, Sun Microsystems, Inc. All Rights Reserved.
The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
DI_BINDING_NAME 3DEVINFO "Mar 22, 2004"
NAME
di_binding_name, di_bus_addr, di_compatible_names, di_devid, di_driver_name, di_driver_ops, di_driver_major, di_instance, di_nodeid, di_node_name - return libdevinfo node information
SYNOPSIS

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

char *di_binding_name(di_node_t node);

char *di_bus_addr(di_node_t node);

int di_compatible_names(di_node_t node, char **names);

ddi_devid_t di_devid(di_node_t node);

char *di_driver_name(di_node_t node);

uint_t di_driver_ops(di_node_t node);

int di_driver_major(di_node_t node);

int di_instance(di_node_t node);

int di_nodeid(di_node_t node);

char *di_node_name(di_node_t node);
PARAMETERS
names

The address of a pointer.

node

A handle to a device node.

DESCRIPTION

These functions extract information associated with a device node.

RETURN VALUES

The di_binding_name() function returns a pointer to the binding name. The binding name is the name used by the system to select a driver for the device.

The di_bus_addr() function returns a pointer to a null-terminated string containing the assigned bus address for the device. NULL is returned if a bus address has not been assigned to the device. A zero-length string may be returned and is considered a valid bus address.

The return value of di_compatible_names() is the number of compatible names. names is updated to point to a buffer contained within the snapshot. The buffer contains a concatenation of null-terminated strings, for example:

<name1>/0<name2>/0...<namen>/0

See the discussion of generic names in Writing Device Drivers for a description of how compatible names are used by Solaris to achieve driver binding for the node.

The di_devid() function returns the device ID for node, if it is registered. Otherwise, a null pointer is returned. Interfaces in the libdevid(3LIB) library may be used to manipulate the handle to the device id. This function is obsolete and might be removed from a future Solaris release. Applications should use the "devid" property instead.

The di_driver_name() function returns the name of the driver bound to the node. A null pointer is returned if node is not bound to any driver.

The di_driver_ops() function returns a bit array of device driver entry points that are supported by the driver bound to this node. Possible bit fields supported by the driver are DI_CB_OPS, DI_BUS_OPS, DI_STREAM_OPS.

The di_driver_major() function returns the major number associated with the driver bound to node. If there is no driver bound to the node, this function returns -1.

The di_instance() function returns the instance number of the device. A value of -1 indicates an instance number has not been assigned to the device by the system.

The di_nodeid() function returns the type of device, which may be one of the following possible values: DI_PSEUDO_NODEID, DI_PROM_NODEID, and DI_SID_NODEID. Devices of type DI_PROM_NODEID may have additional properties that are defined by the PROM. See di_prom_prop_data(3DEVINFO) and di_prom_prop_lookup_bytes(3DEVINFO).

The di_node_name() function returns a pointer to a null-terminated string containing the node name.

EXAMPLES

See di_init(3DEVINFO) for an example demonstrating typical use of these functions.

ATTRIBUTES

See attributes(5) for descriptions of the following attributes:

ATTRIBUTE TYPE ATTRIBUTE VALUE
Interface Stability Evolving (di_devid() is obsolete)
MT-Level Safe
SEE ALSO

di_init(3DEVINFO), di_prom_init(3DEVINFO), di_prom_prop_data(3DEVINFO), di_prom_prop_lookup_bytes(3DEVINFO), libdevid(3LIB), libdevinfo(3LIB), attributes(5)

Writing Device Drivers