Device_t
is the pointer type for the device
structure. Here we consider only the methods interesting from the device driver
writer's standpoint. The methods to manipulate values in the device structure
are:
device_t device_get_parent(dev)
Get the parent bus
of a device.
driver_t device_get_driver(dev)
Get pointer to its
driver structure.
char *device_get_name(dev)
Get the driver name,
such as "xxx" for our example.
int device_get_unit(dev)
Get the unit number
(units are numbered from 0 for the devices associated with each driver).
char *device_get_nameunit(dev)
Get the device name
including the unit number, such as “xxx0”, “xxx1” and so
on.
char *device_get_desc(dev)
Get the device
description. Normally it describes the exact model of device in human-readable
form.
device_set_desc(dev, desc)
Set the description.
This makes the device description point to the string desc which may not be
deallocated or changed after that.
device_set_desc_copy(dev, desc)
Set the
description. The description is copied into an internal dynamically allocated
buffer, so the string desc may be changed afterwards without adverse
effects.
void *device_get_softc(dev)
Get pointer to the
device descriptor (struct xxx_softc
)
associated with this device.
u_int32_t device_get_flags(dev)
Get the flags
specified for the device in the configuration file.
A convenience function device_printf(dev, fmt, ...)
may be used to print the messages from the device driver. It automatically prepends
the unitname and colon to the message.
The device_t methods are implemented in the file kern/bus_subr.c.