pm_send_all
Prev | Chapter 17. Power Management | Next

## Name

pm_send_all — send request to all managed devices

## Synopsis

`int pm_send_all (` | pm_request_t | rqst,
| void * | data`)`;

## Arguments

`rqst`

  power management request

`data`

  data for the callback

## Description

Issue a power management request to a all devices. The `PM_SUSPEND` events are handled specially. Any device is permitted to fail a suspend by returning a non zero (error) value from its callback function. If any device vetoes a suspend request then all other devices that have suspended during the processing of this request are restored to their previous state.

## WARNING

This function takes the pm_devs_lock. The lock is not dropped until the callbacks have completed. This prevents races against pm locking functions, races against module unload pm_unregister code. It does mean however that you must not issue pm_ functions within the callback or you will deadlock and users will hate you.

Zero is returned on success. If a suspend fails then the status from the device that vetoes the suspend is returned.

## BUGS

what stops two power management requests occurring in parallel and conflicting.

Prev | Up | Next
pm_register | Home | Chapter 18. Device drivers infrastructure