Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

getinfo(9e) [opensolaris man page]

getinfo(9E)							Driver Entry Points						       getinfo(9E)

NAME
getinfo - get device driver information SYNOPSIS
#include <sys/ddi.h> #include <sys/sunddi.h> int prefixgetinfo(dev_info_t *dip, ddi_info_cmd_t cmd, void *arg, void **resultp); INTERFACE LEVEL
Solaris DDI specific (Solaris DDI). This entry point is required for drivers which export cb_ops(9S) entry points. ARGUMENTS
dip Do not use. cmd Command argument - valid command values are DDI_INFO_DEVT2DEVINFO and DDI_INFO_DEVT2INSTANCE. arg Command specific argument. resultp Pointer to where the requested information is stored. DESCRIPTION
When cmd is set to DDI_INFO_DEVT2DEVINFO, getinfo() should return the dev_info_t pointer associated with the dev_t arg. The dev_info_t pointer should be returned in the field pointed to by resultp. When cmd is set to DDI_INFO_DEVT2INSTANCE, getinfo() should return the instance number associated with the dev_t arg. The instance number should be returned in the field pointed to by resultp. Drivers which do not export cb_ops(9S) entry points are not required to provide a getinfo() entry point, and may use nodev(9F) in the devo_getinfo field of the dev_ops(9S) structure. A SCSI HBA driver is an example of a driver which is not required to provide cb_ops(9S) entry points. RETURN VALUES
getinfo() should return: DDI_SUCCESS on success. DDI_FAILURE on failure. EXAMPLES
Example 1 getinfo() implementation /*ARGSUSED*/ static int rd_getinfo(dev_info_t *dip, ddi_info_cmd_t infocmd, void *arg, void **resultp) { /* Note that in this simple example * the minor number is the instance * number. */ devstate_t *sp; int error = DDI_FAILURE; switch (infocmd) { case DDI_INFO_DEVT2DEVINFO: if ((sp = ddi_get_soft_state(statep, getminor((dev_t) arg))) != NULL) { *resultp = sp->devi; error = DDI_SUCCESS; } else *result = NULL; break; case DDI_INFO_DEVT2INSTANCE: *resultp = (void *) (uintptr_t) getminor((dev_t) arg); error = DDI_SUCCESS; break; } return (error); } SEE ALSO
ddi_no_info(9F), nodev(9F), cb_ops(9S), dev_ops(9S) Writing Device Drivers NOTES
Non-gld(7D)-based DLPI network streams drivers are encouraged to switch to gld(7D). Failing this, a driver that creates DLPI style-2 minor nodes must specify CLONE_DEV for its style-2 ddi_create_minor_node(9F) nodes and use qassociate(9F). A driver that supports both style-1 and style-2 minor nodes should return DDI_FAILURE for DDI_INFO_DEVT2INSTANCE and DDI_INFO_DEVT2DEVINFO getinfo() calls to style-2 minor nodes. (The correct association is already established by qassociate(9F)). A driver that only supports style-2 minor nodes can use ddi_no_info(9F) for its getinfo() implementation. For drivers that do not follow these rules, the results of a modunload(1M) of the driver or a cfgadm(1M) remove of hardware controlled by the driver are undefined. SunOS 5.11 16 Jan 2008 getinfo(9E)

Check Out this Related Man Page

dev_ops(9S)						    Data Structures for Drivers 					       dev_ops(9S)

NAME
dev_ops - device operations structure SYNOPSIS
#include <sys/conf.h> #include <sys/devops.h> INTERFACE LEVEL
Solaris DDI specific (Solaris DDI). DESCRIPTION
dev_ops contains driver common fields and pointers to the bus_ops and cb_ops(9S). Following are the device functions provided in the device operations structure. All fields must be set at compile time. devo_rev Driver build version. Set this to DEVO_REV. devo_refcnt Driver reference count. Set this to 0. devo_getinfo Get device driver information (see getinfo(9E)). devo_identify This entry point is obsolete. Set to nulldev. devo_probe Probe device. See probe(9E). devo_attach Attach driver to dev_info. See attach(9E). devo_detach Detach/prepare driver to unload. See detach(9E). devo_reset Reset device. (Not supported in this release.) Set this to nodev. devo_cb_ops Pointer to cb_ops(9S) structure for leaf drivers. devo_bus_ops Pointer to bus operations structure for nexus drivers. Set this to NULL if this is for a leaf driver. devo_power Power a device attached to system. See power(9E). STRUCTURE MEMBERS
int devo_rev; int devo_refcnt; int (*devo_getinfo)(dev_info_t *dip, ddi_info_cmd_t infocmd, void *arg, void **result); int (*devo_identify)(dev_info_t *dip); int (*devo_probe)(dev_info_t *dip); int (*devo_attach)(dev_info_t *dip, ddi_attach_cmd_t cmd); int (*devo_detach)(dev_info_t *dip, ddi_detach_cmd_t cmd); int (*devo_reset)(dev_info_t *dip, ddi_reset_cmd_t cmd); struct cb_ops *devo_cb_ops; struct bus_ops *devo_bus_ops; int (*devo_power)(dev_info_t *dip, int component, int level); SEE ALSO
attach(9E), detach(9E), getinfo(9E), probe(9E), power(9E), nodev(9F) Writing Device Drivers SunOS 5.10 11 Apr 2003 dev_ops(9S)
Man Page