1.\" Copyright (c) 1999 Mitsuru IWASAKI <iwasaki@FreeBSD.org> 2.\" Copyright (c) 1999 KOIE Hidetaka <koie@suri.co.jp> 3.\" Copyright (c) 1999 Yoshihiko SARUMARU Aq <mistral@imasy.or.jp> 4.\" Copyright (c) 1999 Norihiro Kumagai <kuma@nk.rim.or.jp> 5.\" All rights reserved. 6.\" 7.\" Redistribution and use in source and binary forms, with or without 8.\" modification, are permitted provided that the following conditions 9.\" are met: 10.\" 1. Redistributions of source code must retain the above copyright 11.\" notice, this list of conditions and the following disclaimer. 12.\" 2. Redistributions in binary form must reproduce the above copyright 13.\" notice, this list of conditions and the following disclaimer in the 14.\" documentation and/or other materials provided with the distribution. 15.\" 16.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 17.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 20.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 21.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 22.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 23.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 24.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 25.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 26.\" SUCH DAMAGE. 27.\" 28.\" @(#)apmd.8 1.1 (FreeBSD) 6/28/99 29.\" $Id: apmd.8,v 1.1.1 1999/6/08 09:01:47 koie Exp % 30.\" 31.Dd June 28, 1999 32.Dt APMD 8 33.Os 34.Sh NAME 35.Nm apmd 36.Nd Advanced Power Management monitor daemon 37.Sh SYNOPSIS 38.Nm apmd 39.Op Fl d 40.Op Fl f file 41.Op Fl v 42.Sh DESCRIPTION 43.Nm Apmd 44monitors the occurrence of the specified Advanced Power Management 45.Pq APM 46events and, if one of the events occurs, it executes the sequence of 47commands corresponding to the event. Only the events specified in the 48configuration file are notified to 49.Nm apmd ; 50all other events are ignored. For each event posted by the APM BIOS, 51.Nm apmd 52invokes the sequence of commands specified in the configuration file. 53When 54.Nm apmd 55is running with monitoring suspend/standby requests, 56the kernel will not process those requests. 57Therefore, if you wish action to be taken when these events 58occur, you need to explicitly configure the appropriate commands or 59built-in functions in the configuration file. 60.Pp 61.Nm Apmd 62recognizes the following runtime options: 63.Bl -tag -width -f_file 64.It Fl d 65Starts in debug mode. This causes 66.Nm apmd 67to execute in the foreground instead of in daemon mode. 68.It Fl f Ar file 69Specifies a different configuration file 70.Ar file 71to be used in place of the default 72.Pa /etc/apmd.conf . 73.It Fl v 74Verbose mode. 75.El 76.Pp 77When 78.Nm apmd 79starts, it reads the configuration file 80.Po 81.Pa /etc/apmd.conf 82as default 83.Pc 84and notifies the set of events to be monitored to the APM device driver. 85When it terminates, the APM device driver automatically cancels 86monitored events. 87.Pp 88If the 89.Nm apmd 90process receives a SIGHUP, it will reread its configuration file and 91notify the APM device driver of any changes to its configuration. 92.Pp 93.Nm Apmd 94uses the device 95.Pa /dev/apmctl 96to issue 97.Xr ioctl 2 98requests for monitoring events and for controlling the APM system. 99This device file is opened exclusively, so only a single 100.Nm apmd 101process can be running at any time. 102.Pp 103When 104.Nm apmd 105receives an APM event, it forks a child process to execute the 106commands specified in the configuration file and then continues 107listening for more events. The child process executes the commands 108specified, one at a time and in the order that they are listed. 109.Pp 110While 111.Nm apmd 112is processing the command list for SUSPEND/STANDBY requests, the APM kernel 113device driver issues notifications to APM BIOS once per second so that the 114BIOS knows that there are still some commands pending, and that it should not 115complete the request just yet. 116.Pp 117The 118.Nm apmd 119daemon creates the file 120.Pa /var/run/apmd.pid , 121and stores its process 122id there. 123This can be used to kill or reconfigure 124.Nm apmd . 125.Sh CONFIGURATION FILE 126The structure of the 127.Nm apmd 128configuration file is quite simple. For example: 129.Pp 130.Bd -literal 131apm_event SUSPENDREQ { 132 exec "sync && sync && sync"; 133 exec "sleep 1"; 134 exec "zzz"; 135} 136.Ed 137.Pp 138will cause 139.Nm apmd 140to recieve the APM event 141.Ql SUSPENDREQ 142(which may be posted by an LCD close), run the 143.Ql sync 144command 3 times and wait for a while, then execute 145.Nm zzz 146( 147.Nm apm 148.Fl z 149) 150to put the system in the suspend state. 151.Pp 152.Bl -bullet 153.It 154The apm_event keyword 155.Bd -ragged -offset indent 156.Ql apm_event 157is the keyword which indicates the start of configuration for 158each events. 159.Ed 160.It 161APM events 162.Bd -ragged -offset indent 163If you wish to execute the same commands for different events, the 164event names should be delimited by a comma. The following are 165valid event names: 166.Bl -item 167.It 168- Events ignored by the kernel if 169.Nm apmd 170is running: 171.Pp 172.Bl -tag -hang -width USERSUSPENDREQ -compact -offset indent 173.It STANDBYREQ 174.It SUSPENDREQ 175should include sync in the command list, 176.It USERSUSPENDREQ 177should include sync in the command list, 178.It BATTERYLOW 179only zzz should be specified in the command list. 180.El 181.It 182- Events passed to 183.Nm apmd 184after kernel handling: 185.Pp 186.Bl -tag -hang -width USERSUSPENDREQ -compact -offset indent 187.It NORMRESUME 188.It CRITRESUME 189.It STANDBYRESUME 190.It POWERSTATECHANGE 191.It UPDATETIME 192.El 193.Pp 194Other events will not be sent to 195.Nm apmd . 196.El 197.Ed 198.It 199command line syntax 200.Bd -ragged -offset indent 201In the example above, the three lines begining with 202.Ql exec 203are commands for the event. 204Each line should be terminated with a semicolon. 205The command list for the event should be enclosed by 206.Ql { 207and 208.Ql } . 209.Nm apmd 210uses 211.Pa /bin/sh 212for double-quotation enclosed command execution, just as with 213.Xr system 3 . 214Each command is executed in order until the end of 215the list is reached or a command finishes with a non-zero status code. 216.Nm apmd 217will report any failed command's status code via 218.Xr syslog 3 219and will then reject the request event posted by the APM BIOS. 220.Ed 221.It 222Built-in functions 223.Bd -ragged -offset indent 224You can also specify 225.Nm apmd 226built-in functions instead of command lines. 227A built-in function name should be terminated with a semicolon, 228just as with a command line. 229The following built-in functions are currently supported: 230.Bl -item 231.It 232- reject: 233.Bd -ragged -offset indent 234Reject last request posted by APM BIOS. This can be used to reject 235a SUSPEND request when the LCD is closed and put the system in a 236STANDBY state instead. 237.Ed 238.El 239.El 240.Sh EXAMPLES 241Sample configuration commands include: 242.Bd -literal 243apm_event SUSPENDREQ { 244 exec "/etc/rc.suspend"; 245} 246 247apm_event USERSUSPENDREQ { 248 exec "sync && sync && sync"; 249 exec "sleep 1"; 250 exec "apm -z"; 251} 252 253apm_event NORMRESUME, STANDBYRESUME { 254 exec "/etc/rc.resume"; 255} 256 257# resume event configuration for serial mouse users by 258# reinitializing a moused(8) connected to a serial port. 259# 260#apm_event NORMRESUME { 261# exec "kill -HUP `cat /var/run/moused.pid`"; 262#} 263# 264# suspend request event configuration for ATA HDD users: 265# execute standby instead of suspend. 266# 267#apm_event SUSPENDREQ { 268# reject; 269# exec "sync && sync && sync"; 270# exec "sleep 1"; 271# exec "apm -Z"; 272#} 273.Ed 274.Sh FILES 275.Bl -tag -width /etc/apmd.conf -compact 276.It Pa /etc/apmd.conf 277.It Pa /dev/apmctl 278.It Pa /var/run/apmd.pid 279.El 280.Sh SEE ALSO 281.Xr apm 4 , 282.Xr apm 8 , 283.Xr apmconf 8 284.Sh AUTHORS 285.An Mitsuru IWASAKI Aq iwasaki@FreeBSD.org 286.An KOIE Hidetaka Aq koie@suri.co.jp 287.Pp 288Some contributions made by 289.An Warner Losh Aq imp@FreeBSD.org , 290.An Hiroshi Yamashita Aq bluemoon@msj.biglobe.ne.jp , 291.An Yoshihiko SARUMARU Aq mistral@imasy.or.jp , 292.An Norihiro Kumagai Aq kuma@nk.rim.or.jp , 293.An NAKAGAWA Yoshihisa Aq nakagawa@jp.FreeBSD.org , 294and 295.An Nick Hilliard Aq nick@foobar.org . 296.Sh HISTORY 297The 298.Nm apmd 299command appeared in 300.Fx 4.0 . 301