d50a71bdd8
userland code. Using apmd.conf, the apmd(8) configuration file, you can select the APM events to be handled from userland and specify the commands for a given event, allowing APM behaviour to be configured flexibly. Have Fun! Submitted by: iwasaki, KOIE Hidetaka <hide@koie.org> Reviewed by: -hackers, -mobile and bsd-nomads ML folks. Contributed by: Warner Losh <imp@FreeBSD.org>, Hiroshi Yamashita <bluemoon@msj.biglobe.ne.jp>, Yoshihiko SARUMARU <mistral@imasy.or.jp>, Norihiro Kumagai <kuma@nk.rim.or.jp>, NAKAGAWA Yoshihisa <nakagawa@jp.FreeBSD.org>, and Nick Hilliard <nick@foobar.org>.
301 lines
8.0 KiB
Groff
301 lines
8.0 KiB
Groff
.\" Copyright (c) 1999 Mitsuru IWASAKI <iwasaki@FreeBSD.org>
|
|
.\" Copyright (c) 1999 KOIE Hidetaka <koie@suri.co.jp>
|
|
.\" Copyright (c) 1999 Yoshihiko SARUMARU Aq <mistral@imasy.or.jp>
|
|
.\" Copyright (c) 1999 Norihiro Kumagai <kuma@nk.rim.or.jp>
|
|
.\" All rights reserved.
|
|
.\"
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
.\" modification, are permitted provided that the following conditions
|
|
.\" are met:
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
.\" documentation and/or other materials provided with the distribution.
|
|
.\"
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
.\" SUCH DAMAGE.
|
|
.\"
|
|
.\" @(#)apmd.8 1.1 (FreeBSD) 6/28/99
|
|
.\" $Id: apmd.8,v 1.1.1 1999/6/08 09:01:47 koie Exp %
|
|
.\"
|
|
.Dd June 28, 1999
|
|
.Dt APMD 8
|
|
.Os
|
|
.Sh NAME
|
|
.Nm apmd
|
|
.Nd Advanced Power Management monitor daemon
|
|
.Sh SYNOPSIS
|
|
.Nm apmd
|
|
.Op Fl d
|
|
.Op Fl f file
|
|
.Op Fl v
|
|
.Sh DESCRIPTION
|
|
.Nm Apmd
|
|
monitors the occurrence of the specified Advanced Power Management
|
|
.Pq APM
|
|
events and, if one of the events occurs, it executes the sequence of
|
|
commands corresponding to the event. Only the events specified in the
|
|
configuration file are notified to
|
|
.Nm apmd ;
|
|
all other events are ignored. For each event posted by the APM BIOS,
|
|
.Nm apmd
|
|
invokes the sequence of commands specified in the configuration file.
|
|
When
|
|
.Nm apmd
|
|
is running with monitoring suspend/standby requests,
|
|
the kernel will not process those requests.
|
|
Therefore, if you wish action to be taken when these events
|
|
occur, you need to explicitly configure the appropriate commands or
|
|
built-in functions in the configuration file.
|
|
.Pp
|
|
.Nm Apmd
|
|
recognizes the following runtime options:
|
|
.Bl -tag -width -f_file
|
|
.It Fl d
|
|
Starts in debug mode. This causes
|
|
.Nm apmd
|
|
to execute in the foreground instead of in daemon mode.
|
|
.It Fl f Ar file
|
|
Specifies a different configuration file
|
|
.Ar file
|
|
to be used in place of the default
|
|
.Pa /etc/apmd.conf .
|
|
.It Fl v
|
|
Verbose mode.
|
|
.El
|
|
.Pp
|
|
When
|
|
.Nm apmd
|
|
starts, it reads the configuration file
|
|
.Po
|
|
.Pa /etc/apmd.conf
|
|
as default
|
|
.Pc
|
|
and notifies the set of events to be monitored to the APM device driver.
|
|
When it terminates, the APM device driver automatically cancels
|
|
monitored events.
|
|
.Pp
|
|
If the
|
|
.Nm apmd
|
|
process receives a SIGHUP, it will reread its configuration file and
|
|
notify the APM device driver of any changes to its configuration.
|
|
.Pp
|
|
.Nm Apmd
|
|
uses the device
|
|
.Pa /dev/apmctl
|
|
to issue
|
|
.Xr ioctl 2
|
|
requests for monitoring events and for controlling the APM system.
|
|
This device file is opened exclusively, so only a single
|
|
.Nm apmd
|
|
process can be running at any time.
|
|
.Pp
|
|
When
|
|
.Nm apmd
|
|
receives an APM event, it forks a child process to execute the
|
|
commands specified in the configuration file and then continues
|
|
listening for more events. The child process executes the commands
|
|
specified, one at a time and in the order that they are listed.
|
|
.Pp
|
|
While
|
|
.Nm apmd
|
|
is processing the command list for SUSPEND/STANDBY requests, the APM kernel
|
|
device driver issues notifications to APM BIOS once per second so that the
|
|
BIOS knows that there are still some commands pending, and that it should not
|
|
complete the request just yet.
|
|
.Pp
|
|
The
|
|
.Nm apmd
|
|
daemon creates the file
|
|
.Pa /var/run/apmd.pid ,
|
|
and stores its process
|
|
id there.
|
|
This can be used to kill or reconfigure
|
|
.Nm apmd .
|
|
.Sh CONFIGURATION FILE
|
|
The structure of the
|
|
.Nm apmd
|
|
configuration file is quite simple. For example:
|
|
.Pp
|
|
.Bd -literal
|
|
apm_event SUSPENDREQ {
|
|
exec "sync && sync && sync";
|
|
exec "sleep 1";
|
|
exec "zzz";
|
|
}
|
|
.Ed
|
|
.Pp
|
|
will cause
|
|
.Nm apmd
|
|
to recieve the APM event
|
|
.Ql SUSPENDREQ
|
|
(which may be posted by an LCD close), run the
|
|
.Ql sync
|
|
command 3 times and wait for a while, then execute
|
|
.Nm zzz
|
|
(
|
|
.Nm apm
|
|
.Fl z
|
|
)
|
|
to put the system in the suspend state.
|
|
.Pp
|
|
.Bl -bullet
|
|
.It
|
|
The apm_event keyword
|
|
.Bd -ragged -offset indent
|
|
.Ql apm_event
|
|
is the keyword which indicates the start of configuration for
|
|
each events.
|
|
.Ed
|
|
.It
|
|
APM events
|
|
.Bd -ragged -offset indent
|
|
If you wish to execute the same commands for different events, the
|
|
event names should be delimited by a comma. The following are
|
|
valid event names:
|
|
.Bl -item
|
|
.It
|
|
- Events ignored by the kernel if
|
|
.Nm apmd
|
|
is running:
|
|
.Pp
|
|
.Bl -tag -hang -width USERSUSPENDREQ -compact -offset indent
|
|
.It STANDBYREQ
|
|
.It SUSPENDREQ
|
|
should include sync in the command list,
|
|
.It USERSUSPENDREQ
|
|
should include sync in the command list,
|
|
.It BATTERYLOW
|
|
only zzz should be specified in the command list.
|
|
.El
|
|
.It
|
|
- Events passed to
|
|
.Nm apmd
|
|
after kernel handling:
|
|
.Pp
|
|
.Bl -tag -hang -width USERSUSPENDREQ -compact -offset indent
|
|
.It NORMRESUME
|
|
.It CRITRESUME
|
|
.It STANDBYRESUME
|
|
.It POWERSTATECHANGE
|
|
.It UPDATETIME
|
|
.El
|
|
.Pp
|
|
Other events will not be sent to
|
|
.Nm apmd .
|
|
.El
|
|
.Ed
|
|
.It
|
|
command line syntax
|
|
.Bd -ragged -offset indent
|
|
In the example above, the three lines begining with
|
|
.Ql exec
|
|
are commands for the event.
|
|
Each line should be terminated with a semicolon.
|
|
The command list for the event should be enclosed by
|
|
.Ql {
|
|
and
|
|
.Ql } .
|
|
.Nm apmd
|
|
uses
|
|
.Pa /bin/sh
|
|
for double-quotation enclosed command execution, just as with
|
|
.Xr system 3 .
|
|
Each command is executed in order until the end of
|
|
the list is reached or a command finishes with a non-zero status code.
|
|
.Nm apmd
|
|
will report any failed command's status code via
|
|
.Xr syslog 3
|
|
and will then reject the request event posted by the APM BIOS.
|
|
.Ed
|
|
.It
|
|
Built-in functions
|
|
.Bd -ragged -offset indent
|
|
You can also specify
|
|
.Nm apmd
|
|
built-in functions instead of command lines.
|
|
A built-in function name should be terminated with a semicolon,
|
|
just as with a command line.
|
|
The following built-in functions are currently supported:
|
|
.Bl -item
|
|
.It
|
|
- reject:
|
|
.Bd -ragged -offset indent
|
|
Reject last request posted by APM BIOS. This can be used to reject
|
|
a SUSPEND request when the LCD is closed and put the system in a
|
|
STANDBY state instead.
|
|
.Ed
|
|
.El
|
|
.El
|
|
.Sh EXAMPLES
|
|
Sample configuration commands include:
|
|
.Bd -literal
|
|
apm_event SUSPENDREQ {
|
|
exec "/etc/rc.suspend";
|
|
}
|
|
|
|
apm_event USERSUSPENDREQ {
|
|
exec "sync && sync && sync";
|
|
exec "sleep 1";
|
|
exec "apm -z";
|
|
}
|
|
|
|
apm_event NORMRESUME, STANDBYRESUME {
|
|
exec "/etc/rc.resume";
|
|
}
|
|
|
|
# resume event configuration for serial mouse users by
|
|
# reinitializing a moused(8) connected to a serial port.
|
|
#
|
|
#apm_event NORMRESUME {
|
|
# exec "kill -HUP `cat /var/run/moused.pid`";
|
|
#}
|
|
#
|
|
# suspend request event configuration for ATA HDD users:
|
|
# execute standby instead of suspend.
|
|
#
|
|
#apm_event SUSPENDREQ {
|
|
# reject;
|
|
# exec "sync && sync && sync";
|
|
# exec "sleep 1";
|
|
# exec "apm -Z";
|
|
#}
|
|
.Ed
|
|
.Sh FILES
|
|
.Bl -tag -width /etc/apmd.conf -compact
|
|
.It Pa /etc/apmd.conf
|
|
.It Pa /dev/apmctl
|
|
.It Pa /var/run/apmd.pid
|
|
.El
|
|
.Sh SEE ALSO
|
|
.Xr apm 4 ,
|
|
.Xr apm 8 ,
|
|
.Xr apmconf 8
|
|
.Sh AUTHORS
|
|
.An Mitsuru IWASAKI Aq iwasaki@FreeBSD.org
|
|
.An KOIE Hidetaka Aq koie@suri.co.jp
|
|
.Pp
|
|
Some contributions made by
|
|
.An Warner Losh Aq imp@FreeBSD.org ,
|
|
.An Hiroshi Yamashita Aq bluemoon@msj.biglobe.ne.jp ,
|
|
.An Yoshihiko SARUMARU Aq mistral@imasy.or.jp ,
|
|
.An Norihiro Kumagai Aq kuma@nk.rim.or.jp ,
|
|
.An NAKAGAWA Yoshihisa Aq nakagawa@jp.FreeBSD.org ,
|
|
and
|
|
.An Nick Hilliard Aq nick@foobar.org .
|
|
.Sh HISTORY
|
|
The
|
|
.Nm apmd
|
|
command appeared in
|
|
.Fx 4.0 .
|