FreeBSD Manual Pages
DEVICE_IDENTIFY(9) Kernel Developer's Manual DEVICE_IDENTIFY(9) NAME DEVICE_IDENTIFY -- identify new child devices and register them SYNOPSIS #include <sys/param.h> #include <sys/bus.h> void DEVICE_IDENTIFY(driver_t *driver, device_t parent); DESCRIPTION The identify method of a device driver is used to add devices that can- not be enumerated by the standard method on a bus device. Devices can be enumerated in various ways including accessing non-ambiguous device registers and parsing firmware tables. Software-only pseudo devices are also often enumerated via identify methods. For each newly identified device, a new device instance should be cre- ated by invoking the BUS_ADD_CHILD(9) method. If the identify method is able to discover other properties about the new device, those should also be set. For example, device resources should be added to the de- vice by calling bus_set_resource(9) for each resource. An identify method might be invoked multiple times. If a device driver is unloaded and loaded, the identify method will be called a second time after being reloaded. As a result, the identify method should avoid duplicate devices. Devices added by identify methods typically use a fixed device name in which case device_find_child(9) can be used to detect existing devices. EXAMPLES 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 parent bus device. void foo_identify(driver_t *driver, device_t parent) { device_t child; retrieve_device_information; if (devices matches one of your supported devices && device_get_child(parent, "foo", -1) == NULL) { child = BUS_ADD_CHILD(parent, 0, "foo", -1); bus_set_resource(child, SYS_RES_IOPORT, 0, FOO_IOADDR, 1); } } SEE ALSO BUS_ADD_CHILD(9), bus_set_resource(9), device(9), device_find_child(9) AUTHORS This manual page was written by Alexander Langer <alex@FreeBSD.org>. FreeBSD 14.3 January 9, 2025 DEVICE_IDENTIFY(9)
NAME | SYNOPSIS | DESCRIPTION | EXAMPLES | SEE ALSO | AUTHORS
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=DEVICE_IDENTIFY&sektion=9&manpath=FreeBSD+14.3-RELEASE+and+Ports>
