NAME
powerhook_establish,
powerhook_disestablish
—
add or remove a power change hook
SYNOPSIS
void *
powerhook_establish(
const
char *name,
void (*fn)(int
why, void *a),
void
*arg);
void
powerhook_disestablish(
void
*cookie);
DESCRIPTION
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 cannot 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 suspend the
system is going to lose (almost) all power, standby retains some power (e.g.,
minimal power to USB devices), and at resume power is back to normal.
RETURN VALUES
If successful,
powerhook_establish() returns an opaque pointer
describing the newly-established power hook. Otherwise, it returns NULL.
SEE ALSO
dopowerhooks(9)