| 
 | 
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 <alex@FreeBSD.org>.
FreeBSD 5.2.1			March 10, 2001			 FreeBSD 5.2.1  [ Back ] |