1.2.3 Declaring and Initializing the driver Data Structure
The following code shows how the
if_el
device driver declares and
initializes the
driver
data structure with the names of its entry points:
static struct driver eldriver = {
1
el_probe,
0,
el_attach,
0,
0,
0,
0,
0,
"el",
el_info,
0,
0,
0,
0,
0,
el_unattach,
0
};
1
Declares and initializes the
driver
data structure called
eldriver
.
Because a network device driver does not have exposure to the file
system, it does not provide
open
,
close
,
read
,
write
, and
strategy
interfaces. The members of the
driver
data structure that specify
these entry points are initialized to 0 (zero).
The
if_el
driver initializes the following members to nonzero values:
•
probe
, which specifies the driver’s
probe
interface,
el_probe
•
cattach
, which specifies the driver’s controller
attach
interface,
el_attach
•
ctlr_name
, which specifies the controller name,
el
•
ctlr_list
, which specifies a pointer to the array of pointers to
controller
data structures,
el_info
•
ctlr_unattach
, which specifies the driver’s controller
unattach
interface,
el_unattach
1.2.4 Defining Driver-Specific Macros
To help you write more portable device drivers, Tru64 UNIX provides the
following kernel routines, which allow you to read from and write to a
control status register (CSR) address without directly accessing its device
registers. These macros call the
read_io_port( )
or
write_io_port( )
generic routines.
Network Device Driver Environment 1–7