|
DEVICE_IDENTIFY(9)
Contents
|
DEVICE_IDENTIFY -- identify a device, register it
#include <sys/param.h>
#include <sys/bus.h>
void
DEVICE_IDENTIFY(driver_t *driver, device_t parent);
The identify function for a device is only needed for devices on busses
that cannot identify their children independently, e.g. the ISA bus. It
is used to recognize the device (usually done by accessing non-ambiguous
registers in the hardware) and to tell the kernel about it and thus creating
a new device instance.
BUS_ADD_CHILD(9) is used to register the device as a child of the bus.
The device's resources (such as IRQ and I/O ports) are registered with
the kernel by calling bus_set_resource() for each resource (refer to
bus_set_resource(9) for more information).
The following pseudo-code shows an example of a function that probes for
a piece of hardware and registers it and its resource (an I/O port) with
the kernel. It also sets the description of the device.
void
foo_identify(driver_t *driver, device_t parent)
{
device_t child;
retrieve_device_information;
if (devices matches one of your supported devices) {
child = BUS_ADD_CHILD(parent, 0, "foo", -1);
device_set_desc_copy(child, "foo chip ver.123");
device_set_driver(child, driver);
bus_set_resource(child, SYS_RES_IOPORT, 0, FOO_IOADDR, 1);
}
}
Zero is returned on success, otherwise an appropriate error is returned
(see errno(2)).
BUS_ADD_CHILD(9), bus_set_resource(9), device(9), device_add_child(9),
DEVICE_ATTACH(9), DEVICE_DETACH(9), DEVICE_PROBE(9),
device_set_desc_copy(9), device_set_driver(9), DEVICE_SHUTDOWN(9)
This man page was written by Alexander Langer <[email protected]>.
FreeBSD 5.2.1 March 10, 2001 FreeBSD 5.2.1 [ Back ] |