Contained Within
Find More Documentation
Featured Support Resources
| Download this book in PDF
NAME
- csx_CS_DDI_Info - obtain DDI information
SYNOPSIS
-
#include <sys/pccard.h>
-
int32_t csx_CS_DDI_Info(cs_ddi_info_t * cdi);
INTERFACE LEVEL
- Solaris DDI Specific (Solaris DDI)
ARGUMENTS
-
-
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 MEMBERS
- The 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 containing the name of the client driver to get information about.
- If csx_CS_DDI_Info( ) is used in a client's xx_getinfo function, then the client will typically extract the Socket value from the * argargument and it must set the driver_name field to the same string used with csx_RegisterClient(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
- The following example shows how a client might call csx_CS_DDI_Info( ) in the client's xx_getinfo function to return the dip or the instance number:
-
-
static int
pcepp_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;
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
|
|