DragonFly On-Line Manual Pages

Search: Section:  

DEVICE_IDENTIFY(9)    DragonFly Kernel Developer's Manual   DEVICE_IDENTIFY(9)


DEVICE_IDENTIFY -- identify a device, register it


#include <sys/param.h> #include <sys/bus.h> int 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 cre- ating 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).


Zero is returned on success, otherwise an appropriate error is returned (see errno(2)).


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); } }


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 <alex@FreeBSD.org>. DragonFly 5.1 March 10, 2001 DragonFly 5.1

Search: Section: