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.