DDI_REMOVING_POWER(9F)  Kernel Functions for Drivers  DDI_REMOVING_POWER(9F)
NAME
       ddi_removing_power - check whether 
DDI_SUSPEND might result in power
       being removed from a device
SYNOPSIS
       #include <sys/ddi.h>
       #include <sys/sunddi.h>       
int ddi_removing_power(
dev_info_t *dip);
INTERFACE LEVEL
       illumos DDI specific (illumos DDI)
DESCRIPTION
       The 
ddi_removing_power() function indicates whether a currently
       pending call into a driver's 
detach(9E) entry point 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 of the
            pending 
DDI_SUSPEND call.       
0            Power will not be removed by the framework as a result of 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:
         int
              xxdetach(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(7) for descriptions of the following attributes:
       +--------------------+-----------------+
       |  ATTRIBUTE TYPE    | ATTRIBUTE VALUE |
       +--------------------+-----------------+
       |Interface Stability | Committed       |
       +--------------------+-----------------+
SEE ALSO
       cpr(4), 
attributes(7), 
attach(9E), 
detach(9E)       Writing Device Drivers                               March 14, 2001         DDI_REMOVING_POWER(9F)