POWERHOOK_ESTABLISH(9) BSD Kernel Developer's Manual POWERHOOK_ESTABLISH(9)
powerhook_establish, powerhook_disestablish -- add or remove a power change hook
powerhook_establish(const char *name, void (*fn)(int why, void *a), void *arg);
The powerhook_establish API is deprecated.
The powerhook_establish() function adds fn of the list of hooks invoked by dopowerhooks(9)
at power change. When invoked, the hook function fn will be passed the new power state as
the first argument and arg as its second argument.
The powerhook_disestablish() function removes the hook described by the opaque pointer
cookie from the list of hooks to be invoked at power change. If cookie is invalid, the
result of powerhook_disestablish() is undefined.
Power hooks should be used to perform activities that must happen when the power situation
to the computer changes. Because of the environment in which they are run, power hooks can-
not rely on many system services (including file systems, and timeouts and other interrupt-
driven services). The power hooks are typically executed from an interrupt context.
The different reasons for calling the power hooks are: suspend, standby, and resume. The
reason is reflected in the why argument and the values PWR_SOFTSUSPEND, PWR_SUSPEND,
PWR_SOFTSTANDBY, PWR_STANDBY, PWR_SOFTRESUME, and PWR_RESUME. It calls with PWR_SOFTxxx in
the normal priority level while the other callings are protected with splhigh(9). At sus-
pend the system is going to lose (almost) all power, standby retains some power (e.g., mini-
mal power to USB devices), and at resume power is back to normal.
If successful, powerhook_establish() returns an opaque pointer describing the newly-estab-
lished power hook. Otherwise, it returns NULL.
BSD May 14, 2009 BSD