Kernel Functions for Drivers csx_CS_DDI_Info(9F)
NAME
csx_CS_DDI_Info - obtain DDI information
SYNOPSIS
#include
int32_t csx_CS_DDI_Info(cs_ddi_info_t *cdi);
INTERFACE LEVEL
Solaris DDI Specific (Solaris DDI)PARAMETERS
cdi Pointer to a cs_ddi_info_t structure.
DESCRIPTION
This function is a Solaris-specific extension that is used
by clients that need to provide the xx_getinfo driver entry
point (see getinfo(9E)). It provides a method for clients to obtain DDI information based on their socket number and client driver name. STRUCTURE MEMBERSThe structure members of cs_ddi_info_t are:
uint32_t Socket; /* socket number */
char* driver_name; /* unique driver name */
dev_info_t *dip; /* dip */
int32_t instance; /* instance */
The fields are defined as follows: Socket This field must be set to the physical socket number that the client is interested in getting information about.driver_name This field must be set to a string contain-
ing the name of the client driver to get information about.If csx_CS_DDI_Info() is used in a client's xx_getinfo func-
tion, then the client will typically extract the Socketvalue from the *arg argument and it must set the driver_name
field to the same string used with csx_RegisterClient(9F).
SunOS 5.11 Last change: 19 Jul 1996 1
Kernel Functions for Drivers csx_CS_DDI_Info(9F)
If the driver_name is found on the Socket, the
csx_CS_DDI_Info() function returns both the dev_info pointer
and the instance fields for the requested driver instance.RETURN VALUES
CS_SUCCESS Successful operation.
CS_BAD_SOCKET Client not found on Socket.
CS_UNSUPPORTED_FUNCTION No PCMCIA hardware installed.
CONTEXT
This function may be called from user or kernel context.EXAMPLES
Example 1 : Using csx_CS_DDI_Info
The following example shows how a client might call thecsx_CS_DDI_Info() in the client's xx_getinfo function to
return the dip or the instance number: static intpcepp_getinfo(dev_info_t *dip, ddi_info_cmd_t cmd, void *arg,
void **result) {int error = DDI_SUCCESS;
pcepp_state_t *pps;
cs_ddi_info_t cs_ddi_info;
switch (cmd) {case DDI_INFO_DEVT2DEVINFO:
cs_ddi_info.Socket = getminor((dev_t)arg) & 0x3f;
cs_ddi_info.driver_name = pcepp_name;
if (csx_CS_DDI_Info(&cs_ddi_info) != CS_SUCCESS)
return (DDI_FAILURE);
if (!(pps = ddi_get_soft_state(pcepp_soft_state_p,
cs_ddi_info.instance))) {
*result = NULL; } else {*result = pps->dip;
} break;case DDI_INFO_DEVT2INSTANCE:
cs_ddi_info.Socket = getminor((dev_t)arg) & 0x3f;
cs_ddi_info.driver_name = pcepp_name;
SunOS 5.11 Last change: 19 Jul 1996 2
Kernel Functions for Drivers csx_CS_DDI_Info(9F)
if (csx_CS_DDI_Info(&cs_ddi_info) != CS_SUCCESS)
return (DDI_FAILURE);
*result = (void *)cs_ddi_info.instance;
break; default:error = DDI_FAILURE;
break; } return (error); }SEE ALSO
getinfo(9E), csx_RegisterClient(9F), ddi_get_instance(9F)
PC Card 95 Standard, PCMCIA/JEIDA
SunOS 5.11 Last change: 19 Jul 1996 3