Kernel Functions for Drivers ddi_removing_power(9F)
NAME
ddi_removing_power - check whether DDI_SUSPEND might result
in power being removed from a deviceSYNOPSIS
#include
#include
int ddi_removing_power(dev_info_t *dip);
INTERFACE LEVEL
Solaris DDI specific (Solaris DDI)DESCRIPTION
The ddi_removing_power() function indicates whether a
currently pending call into a driver's detach(9E) entrypoint with a command of DDI_SUSPEND is likely to result in
power being removed from the device.ddi_removing_power() can return true and power still not be
removed from the device due to a failure to suspend and power off the system.PARAMETERS
The ddi_removing_power() function supports the following
parameter:dip pointer to the device's dev_info structure
RETURN VALUES
The ddi_removing_power() function returns:
1 Power might be removed by the framework as a result ofthe pending DDI_SUSPEND call.
0 Power will not be removed by the framework as a resultof the pending DDI_SUSPEND call.
EXAMPLES
Example 1 Protecting a Tape from Abrupt Power Removal A tape driver that has hardware that would damage the tape if power is removed might include this code in its detach(9E) code:SunOS 5.11 Last change: 14 March 2001 1
Kernel Functions for Drivers ddi_removing_power(9F)
intxxdetach(dev_info_t *dip, ddi_detach_cmd_t cmd)
{ ...case DDI_SUSPEND:
/** We do not allow DDI_SUSPEND if power will be removed and
* we have a device that damages tape when power is removed* We do support DDI_SUSPEND for Device Reconfiguration,
* however. */if (ddi_removing_power(dip) && xxdamages_tape(dip))
return (DDI_FAILURE);
...ATTRIBUTES
See attributes(5) for descriptions of the following attri-
butes:____________________________________________________________
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
|_____________________________|_____________________________|
| Interface Stability | Committed ||_____________________________|_____________________________|
SEE ALSO
attributes(5), cpr(7), attach(9E), detach(9E) Writing Device DriversSunOS 5.11 Last change: 14 March 2001 2