The current state of a device is accessed by calling
device_get_state()
which returns
DS_NOTPRESENT,
DS_ALIVE,
DS_ATTACHED
or
DS_BUSY
(described in
device(9)).
To test see if a device was successfully probed, call
device_is_alive()
which simply returns if the state is greater or equal to
DS_ALIVE.
To test see if a device was successfully attached, call
device_is_attached()
which simply returns if the state is greater or equal to
DS_ATTACHED.
Each device has a busy count which is incremented when
device_busy()
is called and decremented when
device_unbusy()
is called.
Both routines return an error if the device state is less than
DS_ATTACHED.
When
device_busy()
is called on a device in the
DS_ATTACHED
state, the device changes to the
DS_BUSY
state.
When
device_unbusy()
is called and after decrementing, the busy count for the device is
zero, the device changes to the
DS_ATTACHED
state.