Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
DEVICE_IDENTIFY(9)	   Kernel Developer's Manual	    DEVICE_IDENTIFY(9)

NAME
       DEVICE_IDENTIFY -- identify a device, register it

SYNOPSIS
       #include	<sys/param.h>
       #include	<sys/bus.h>

       void
       DEVICE_IDENTIFY(driver_t	*driver, device_t parent);

DESCRIPTION
       The  identify function for a device is only needed for devices on buses
       that cannot identify their children independently, e.g.	the  ISA  bus.
       It  is  used to recognize the device (usually done by accessing non-am-
       biguous 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).

       Since the device	tree and the device  driver  tree  are	disjoint,  the
       DEVICE_IDENTIFY() routine needs to take this into account.  If you load
       and  unload your	device driver that has the identify routine, the child
       node has	the potential for adding the same node multiple	 times	unless
       specific	measure	are taken to preclude that possibility.

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	kernel.

       void
       foo_identify(driver_t *driver, device_t parent)
       {
	       device_t	child;

	       retrieve_device_information;
	       if (devices matches one of your supported devices &&
		   not already in device tree) {
		       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_add_child(9),
       DEVICE_ATTACH(9), DEVICE_DETACH(9), DEVICE_PROBE(9), DEVICE_SHUTDOWN(9)

AUTHORS
       This manual page	was written by Alexander Langer	<alex@FreeBSD.org>.

FreeBSD	13.5		       January 15, 2017		    DEVICE_IDENTIFY(9)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=DEVICE_IDENTIFY&sektion=9&manpath=FreeBSD+13.5-RELEASE+and+Ports>

home | help