Driver Entry Points getinfo(9E)
NAME
getinfo - get device driver information
SYNOPSIS
#include
#include
int prefixgetinfo(devinfot *dip, ddiinfocmdt cmd,
void *arg, void **resultp);
INTERFACE LEVEL
Solaris DI specific (Solaris DI). This entry point is
required for drivers which export cbops(9S) entry points.
ARGUMENTS
dip Do not use.
cmd Command argument - valid command values are
DINFODEVT2DEVINFO and DINFODEVT2INSTANCE.
arg Command specific argument.
resultp Pointer to where the requested information is
stored.
DESCRIPTION
When cmd is set to DINFODEVT2DEVINFO, getinfo() should
return the devinfot pointer associated with the devt arg.
The devinfot pointer should be returned in the field
pointed to by resultp.
When cmd is set to DINFODEVT2INSTANCE, getinfo() should
return the instance number associated with the devt arg.
The instance number should be returned in the field pointed
to by resultp.
Drivers which do not export cbops(9S) entry points are not
required to provide a getinfo() entry point, and may use
nodev(9F) in the devogetinfo field of the devops(9S)
structure. A SCSI HBA driver is an example of a driver which
is not required to provide cbops(9S) entry points.
SunOS 5.11 Last change: 16 Jan 2008 1
Driver Entry Points getinfo(9E)
RETURN VALUES
getinfo() should return:
DISUCES on success.
DIFAILURE on failure.
EXAMPLES
Example 1 getinfo() implementation
/*ARGSUSED*/
static int
rdgetinfo(devinfot *dip, ddiinfocmdt infocmd, void *arg, \
void **resultp)
{
/* Note that in this simple example
* the minor number is the instance
* number. */
devstatet *sp;
int error = DIFAILURE;
switch (infocmd) {
case DINFODEVT2DEVINFO:
if ((sp = ddigetsoftstate(statep,
getminor((devt) arg))) != NUL) {
*resultp = sp->devi;
error = DISUCES;
} else
*result = NUL;
break;
case DINFODEVT2INSTANCE:
*resultp = (void *) (uintptrt) getminor((devt) arg);
error = DISUCES;
break;
}
return (error);
}
SEE ALSO
ddinoinfo(9F), nodev(9F), cbops(9S), devops(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
SunOS 5.11 Last change: 16 Jan 2008 2
Driver Entry Points getinfo(9E)
creates DLPI style-2 minor nodes must specify CLONEDEV
for its style-2 ddicreateminornode(9F) nodes and use
qassociate(9F). A driver that supports both style-1 and
style-2 minor nodes should return DIFAILURE for
DINFODEVT2INSTANCE and DINFODEVT2DEVINFO 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 ddinoinfo(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 Last change: 16 Jan 2008 3
|