*** UNIX MANUAL PAGE BROWSER ***

A Nergahak database for man pages research.

Navigation

Directory Browser

1Browse 4.4BSD4.4BSD
1Browse Digital UNIXDigital UNIX 4.0e
1Browse FreeBSDFreeBSD 14.3
1Browse MINIXMINIX 3.4.0rc6-d5e4fc0
1Browse NetBSDNetBSD 10.1
1Browse OpenBSDOpenBSD 7.7
1Browse UNIX v7Version 7 UNIX
1Browse UNIX v10Version 10 UNIX

Manual Page Search

Manual Page Result

0 Command: DEVICE_IDENTIFY | Section: 9 | Source: FreeBSD | File: DEVICE_IDENTIFY.9.gz
DEVICE_IDENTIFY(9) FreeBSD 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 cannot 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 created 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 device 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 <[email protected]>. FreeBSD 14.1-RELEASE-p8 January 9, 2025 FreeBSD 14.1-RELEASE-p8

Navigation Options