device_probe(9)
NAME
DEVICE_PROBE - probe for device existence
SYNOPSIS
#include <sys/param.h>
#include <sys/bus.h>
int
DEVICE_PROBE(device_t dev);
DESCRIPTION
- The DEVICE_PROBE() method should probe to see if the device
- is present.
It should return 0 if the device exists, ENXIO if it cannot - be found. If
some other error happens during the probe (such as a memory - allocation
failure), an appropriate error code should be returned. For - cases where
more than one driver matches a device, a priority value can - be returned.
In this case, success codes are values less than or equal to - zero with
the highest value representing the best match. Failure - codes are represented by positive values and the regular UNIX error codes
- should be used
for the purpose. - If a driver returns a success code which is less than zero,
- it must not
assume that it will be the same driver which is attached to - the device.
In particular, it must not assume that any values stored in - the softc
structure will be available for its attach method and any - resources allocated during probe must be released and re-allocated if the
- attach method
is called. In addition it is an absolute requirement that - the probe routine have no side effects whatsoever. The probe routine may
- be called
more than once before the attach routine is called. - If a success code of zero is returned, the driver can assume
- that it will
be the one attached, but must not hold any resources when - the probe routine returns. A driver may assume that the softc is pre
- served when it
returns a success code of zero.
RETURN VALUES
- A value equal to or less than zero indicates success,
- greater than zero
indicates an error (errno). For values equal to or less - than zero: zero
indicates highest priority, no further probing is done; for - a value less
than zero, the lower the value the lower the priority, e.g. - -100 indicates a lower priority than -50.
SEE ALSO
- device(9), DEVICE_ATTACH(9), DEVICE_DETACH(9), DEVICE_IDEN
- TIFY(9),
DEVICE_SHUTDOWN(9)
AUTHORS
- This manual page was written by Doug Rabson.
- BSD January 6, 2005