TUPLE(9S) Data Structures for Drivers TUPLE(9S)
NAME
tuple - card information structure (CIS) access structure
SYNOPSIS
#include <sys/pccard.h>
INTERFACE LEVEL
illumos DDI Specific (illumos DDI)
DESCRIPTION
The
tuple_t structure is the basic data structure provided by card
services to manage
PC card information. A
PC card provides
identification and configuration information through its card
information structure (
CIS). A
PC card driver accesses a
PC card's
CIS through various card services functions.
The
CIS information allows
PC cards to be self-identifying: the
CIS provides information to the system so that it can identify the proper
PC card driver for the
PC card, and provides configuration
information so that the driver can allocate appropriate resources to
configure the
PC card for proper operation in the system.
The
CIS information is contained on the
PC card in a linked list of
tuple data structures called a
CIS chain. Each tuple has a one-byte
type and a one-byte link, an offset to the next tuple in the list. A
PC card can have one or more
CIS chains.
A multi-function
PC card that complies with the
PC Card 95
MultiFunction Metaformat specification will have one or more global
CIS chains that collectively are referred to as the global
CIS. These
PC Cards will also have one or more per-function
CIS chains. Each
per-function collection of
CIS chains is referred to as a function-
specific
CIS.
To examine a
PC card's
CIS, first a
PC card driver must locate the
desired tuple by calling
csx_GetFirstTuple(9F). Once the first tuple
is located, subsequent tuples may be located by calling
csx_GetNextTuple(9F). See
csx_GetFirstTuple(9F). The linked list of
tuples may be inspected one by one, or the driver may narrow the
search by requesting only tuples of a particular type.
Once a tuple has been located, the
PC card driver may inspect the
tuple data. The most convenient way to do this for standard tuples is
by calling one of the number of tuple-parsing utility functions; for
custom tuples, the driver may get access to the raw tuple data by
calling
csx_GetTupleData(9F).
illumos
PC card drivers do not need to be concerned with which
CIS chain a tuple appears in. On a multi-function
PC card, the client
will get the tuples from the global
CIS followed by the tuples in the
function-specific
CIS. The caller will not get any tuples from a
function-specific
CIS that does not belong to the caller's function.
STRUCTURE MEMBERS
The structure members of
tuple_t are:
uint32_t Socket; /* socket number */
uint32_t Attributes; /* tuple attributes */
cisdata_t DesiredTuple; /* tuple to search for */
cisdata_t TupleOffset; /* tuple data offset */
cisdata_t TupleDataMax; /* max tuple data size */
cisdata_t TupleDataLen; /* actual tuple data length */
cisdata_t TupleData[CIS_MAX_TUPLE_DATA_LEN];
/* body tuple data */
cisdata_t TupleCode; /* tuple type code */
cisdata_t TupleLink; /* tuple link */
The fields are defined as follows:
Socket Not used in illumos, but for portability with other
card services implementations, it should be set to
the logical socket number.
Attributes This field is bit-mapped. The following bits are
defined:
TUPLE_RETURN_LINK Return link tuples if set.
TUPLE_RETURN_IGNORED_TUPLES Return ignored tuples if set. Ignored tuples are
those tuples in a multi-function
PC card's
global
CIS chain that are duplicates of the same
tuples in a function-specific
CIS chain.
TUPLE_RETURN_NAME Return tuple name string using the
csx_ParseTuple(9F) function if set.
DesiredTuple This field is the requested tuple type code to be
returned when calling
csx_GetFirstTuple(9F) or
csx_GetNextTuple(9F).
RETURN_FIRST_TUPLE is used to
return the first tuple regardless of tuple type.
RETURN_NEXT_TUPLE is used to return the next tuple
regardless of tuple type.
TupleOffset This field allows partial tuple information to be
retrieved, starting at the specified offset within
the tuple. This field must only be set before
calling
csx_GetTupleData(9F).
TupleDataMax This field is the size of the tuple data buffer that
card services uses to return raw tuple data from
csx_GetTupleData(9F). It can be larger than the
number of bytes in the tuple data body. Card
services ignores any value placed here by the
client.
TupleDataLen This field is the actual size of the tuple data
body. It represents the number of tuple data body
bytes returned by
csx_GetTupleData(9F).
TupleData This field is an array of bytes containing the raw
tuple data body contents returned by
csx_GetTupleData(9F).
TupleCode This field is the tuple type code and is returned by
csx_GetFirstTuple(9F) or
csx_GetNextTuple(9F) when a
tuple matching the
DesiredTuple field is returned.
TupleLink This field is the tuple link, the offset to the next
tuple, and is returned by
csx_GetFirstTuple(9F) or
csx_GetNextTuple(9F) when a tuple matching the
DesiredTuple field is returned.
SEE ALSO
csx_GetFirstTuple(9F),
csx_GetTupleData(9F),
csx_ParseTuple(9F),
csx_Parse_CISTPL_BATTERY(9F),
csx_Parse_CISTPL_BYTEORDER(9F),
csx_Parse_CISTPL_CFTABLE_ENTRY(9F),
csx_Parse_CISTPL_CONFIG(9F),
csx_Parse_CISTPL_DATE(9F),
csx_Parse_CISTPL_DEVICE(9F),
csx_Parse_CISTPL_FUNCE(9F),
csx_Parse_CISTPL_FUNCID(9F),
csx_Parse_CISTPL_JEDEC_C(9F),
csx_Parse_CISTPL_MANFID(9F),
csx_Parse_CISTPL_SPCL(9F),
csx_Parse_CISTPL_VERS_1(9F),
csx_Parse_CISTPL_VERS_2(9F) PC Card 95 Standard, PCMCIA/JEIDA
December 20, 1996 TUPLE(9S)