Go to main content

man pages section 9: DDI and DKI Kernel Functions

Exit Print View

Updated: Wednesday, July 27, 2022
 
 

ddi_removing_power(9F)

Name

ddi_removing_power - check whetherDDI_SUSPENDmight 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

Solaris DDI specific (Solaris 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 in Oracle Solaris 11.4