SunOS man pages : probe (9)
Driver Entry Points probe(9E)
NAME
probe - determine if a non-self-identifying device is
present
SYNOPSIS
#include <sys/conf.h>
#include <sys/ddi.h>
#include <sys/sunddi.h>
static intprefixprobe(dev_info_t *dip);
INTERFACE LEVEL
Solaris DDI specific (Solaris DDI). This entry point is
required for non-self-identifying devices. You must write
it for such devices. For self-identifying devices,
nulldev(9F) should be specified in the dev_ops(9S) structure
if a probe routine is not necessary.
ARGUMENTS
dip Pointer to the device's dev_info structure.
DESCRIPTION
probe() determines whether the device corresponding to dip
actually exists and is a valid device for this driver.
probe() is called after identify(9E) and before attach(9E)
for a given dip. For example, the probe() routine can map
the device registers using ddi_map_regs(9F) then attempt to
access the hardware using ddi_peek(9F) or ddi_poke(9F) and
determine if the device exists. Then the device registers
should be unmapped using ddi_unmap_regs(9F).
probe() should only probe the device. It should not create
or change any software state. Device initialization should
be done in attach(9E).
For a self-identifying device, this entry point is not
necessary. However, if a device exists in both self-
identifying and non-self-identifying forms, a probe() rou-
tine can be provided to simplify the driver.
ddi_dev_is_sid(9F) can then be used to determine whether
probe() needs to do any work. See ddi_dev_is_sid(9F) for an
example.
RETURN VALUES
DDI_PROBE_SUCCESS
If the probe was successful.
DDI_PROBE_FAILURE
If the probe failed.
DDI_PROBE_DONTCARE
If the probe was unsuccessful, yet attach(9E) should
SunOS 5.8 Last change: 18 Nov 1992 1
Driver Entry Points probe(9E)
still be called.
DDI_PROBE_PARTIAL
If the instance is not present now, but may be present
in the future.
SEE ALSO
attach(9E), identify(9E), ddi_dev_is_sid(9F),
ddi_map_regs(9F), ddi_peek(9F), ddi_poke(9F), nulldev(9F),
dev_ops(9S)
Writing Device Drivers
SunOS 5.8 Last change: 18 Nov 1992 2
|
 |
|
|