Sync usage with man page.
[netbsd-mini2440.git] / share / man / man4 / man4.i386 / apm.4
blob4db16ae6a3cbef459b393de0e61366d7cf9a9501
1 .\" Copyright (c) 1995,1996 John T. Kohl
2 .\" All rights reserved.
3 .\"
4 .\" Redistribution and use in source and binary forms, with or without
5 .\" modification, are permitted provided that the following conditions
6 .\" are met:
7 .\" 1. Redistributions of source code must retain the above copyright
8 .\"    notice, this list of conditions and the following disclaimer.
9 .\" 2. Redistributions in binary form must reproduce the above copyright
10 .\"    notice, this list of conditions and the following disclaimer in the
11 .\"    documentation and/or other materials provided with the distribution.
12 .\" 3. The name of the author may not be used to endorse or promote products
13 .\"    derived from this software without specific prior written permission.
14 .\"
15 .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR `AS IS'' AND ANY EXPRESS OR
16 .\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17 .\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18 .\" DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
19 .\" INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20 .\" (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
21 .\" SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
23 .\" STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
24 .\" ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25 .\" POSSIBILITY OF SUCH DAMAGE.
26 .\"
27 .\"   $NetBSD: apm.4,v 1.16 2003/04/16 13:35:21 wiz Exp $
28 .\"
29 .Dd May 18, 1996
30 .Dt APM 4 i386
31 .Os
32 .Sh NAME
33 .Nm apm
34 .Nd
35 Advanced Power Management pseudo-device driver
36 .Sh SYNOPSIS
37 .Cd "apm0 at mainbus0"
38 .In machine/apmvar.h
39 .Pa /dev/apm
40 .Sh DESCRIPTION
41 The
42 .Nm apm
43 driver provides support for the Advanced Power Management features of
44 some i386 system BIOSes.  The driver supports the Advanced Power
45 Management (APM) BIOS Interface Specification (revision 1.2), published
46 jointly by the Intel Corporation and the Microsoft Corporation.
47 .Pp
48 The APM driver's behavior may be adjusted by specifying any of the
49 following kernel configuration options:
50 .Bl -tag -width indent -compact
51 .It Dv APM_NO_IDLE
52 Do not call the BIOS CPU idle function from the system idle loop.  (Some
53 systems will hang on certain device accesses, such as sound cards or
54 floppy diskette drives, without this option)
55 .It Dv APM_V10_ONLY
56 Use only the APM revision 1.0 specification calls.  (Some systems do not
57 implement APM v1.1 very well, and generate weird events instead of the
58 expected events when the system suspend key is pressed.)
59 .It Dv APM_NO_V12
60 Don't attach to the BIOS as APM v1.2 compliant device.
61 (In case there are problems with v1.2 support.)
62 .It Dv APM_NO_STANDBY
63 Do not attempt to put the system into standby mode.
64 .It Dv APM_NO_POWEROFF
65 Do not attempt to turn off power when halting the system.
66 .It Dv APM_FORCE_64K_SEGMENTS
67 Force the length of the APM BIOS code and data segments to 64KB.
68 .It Dv APM_ALLOW_BOGUS_SEGMENTS
69 Allow the use of data segments which are in unexpected locations.
70 .It Dv APMDEBUG
71 Enable kernel printout of events received from the APM BIOS.
72 .It Dv APMCALLDEBUG
73 Enable kernel printout of every call to the APM BIOS (this is very noisy).
74 .It Dv APM_POWER_PRINT
75 Print power state on console at
76 .Dv APM_POWER_CHANGE
77 events.  (Since it increases
78 .Xr syslogd 8 Ns 's
79 activity, it may consume increased
80 battery power.  Some systems generate the events too frequently,
81 and printing the status may disturb single-user operations.)
82 .It Dv APM_DISABLE_INTERRUPTS
83 Set this to zero if you don't want the kernel to disable interrupts
84 before calling the BIOS. This is required for most IBM ThinkPads, and
85 some other newer laptops. A good indication that you need this is that
86 the machine hangs just after resuming from suspended state. It's
87 unclear if doing this has negative effects on older BIOS, therefore it
88 defaults to one (i.e interrupts are disabled).
89 .El
90 .Pp
91 If no processes are holding open file descriptors to the APM device, the
92 driver will process the APM BIOS events itself.  If a process has the
93 device open for write, the driver defers all suspend and standby
94 processing to the user process as long as there is sufficient queue
95 space to store the event for the process.  If the device is only open
96 for read, the driver will report events but handle them itself.
97 .Pp
98 The APM device may be opened by multiple readers but only one
99 writer. Multiple readers may fetch the status with
100 .Xr ioctl 2
101 without worrying about interference, but they must cooperate to share
102 events as only a single event queue is provided.  The device may only be
103 .Xr select 2 Ns ed
104 or manipulated with
105 .Xr ioctl 2 ;
106 .Xr read 2
108 .Xr write 2
109 are not supported.
111 .Xr ioctl 2
112 calls supported are:
113 .Bl -tag -width indent -compact
114 .It Dv APM_IOC_SUSPEND
115 Initiate an APM suspend mode.  This is a deep sleep mode which powers down
116 most devices.  The device must be open for writing for this command to succeed.
117 .It Dv APM_IOC_STANDBY
118 Initiate an APM standby mode.  This is a light sleep mode from which the
119 system can quickly restore normal operation.  The device must be open
120 for writing for this command to succeed.
121 .It Dv APM_IOC_GETPOWER
122 Fetch the current power status into an
123 .Va apm_power_info
124 structure.
125 .Bd -literal
126 struct apm_power_info {
127         u_char battery_state;
128         u_char ac_state;
129         u_char battery_life;
130         u_char spare1;
131         u_int minutes_left;             /* estimate */
132         u_int nbattery;
133         u_int batteryid;
134         u_int spare2[4];
138 The structure should be zeroed (except for
139 .Va batteryid )
140 before
141 being passed.
143 .Va battery_state
144 is one of
145 .Dv APM_BATT_HIGH ,
146 .Dv APM_BATT_LOW ,
147 .Dv APM_BATT_CRITICAL ,
148 .Dv APM_BATT_CHARGING ,
150 .Dv APM_BATT_UNKNOWN .
152 .Va ac_state
153 is one of
154 .Dv APM_AC_OFF ,
155 .Dv APM_AC_ON ,
156 .Dv APM_AC_BACKUP ,
158 .Dv APM_AC_UNKNOWN .
160 .Va battery_life
161 is the percentage estimated remaining normal battery life (or 0 if the
162 BIOS cannot provide an estimate).
164 .Va minutes_left
165 is an estimated remaining lifetime (or 0 if the BIOS cannot provide an
166 estimate).
168 .Va nbattery
169 is the number of batteries in the system. If the system is using APM
170 v1.1 or earlier, nbattery will always return 0.
172 Batteries are numbered from a base of 1.
173 If the passed value of
174 .Va batteryid
175 is 0, the returned values will reflect the percentage remaining, minutes
176 left, etc. of all of the system's batteries taken together.
177 If the passed value of
178 .Va batteryid
179 is nonzero, the return values will reflect the indicated
180 battery's percentage remaining, minutes left, etc.
181 It is an error to set
182 .Va batteryid
183 to a value greater than that returned by
184 .Va nbattery .
185 If the system is using APM v1.1 or earlier, individual batteries
186 cannot be queried, and
187 .Va nbattery
188 will always return 0.
189 .Va batteryid
190 is always set to the passed value upon return.
191 .It Dv APM_IOC_NEXTEVENT
192 Fetch the next event from the APM BIOS into an
193 .Va apm_event_info
194 structure.  If no more events are ready, this will return
195 .Dv EAGAIN .
196 .Bd -literal
197 struct apm_event_info {
198       u_int type;
199       u_int index;
200       u_int spare[8];
203 .Va type
204 is one of the APM event types (APM_STANDBY_REQ through
205 APM_SYS_STANDBY_RESUME).
206 .Va index
207 is the ordinal event sequence number.
209 .Sh SEE ALSO
210 .Xr apmd 8
211 .Sh REFERENCES
212 Advanced Power Management (APM) BIOS Interface Specification (Revision
213 1.1), Intel Corporation and Microsoft Corporation.  Intel order number
214 241704-001; Microsoft part number 781-110-X01.
215 .Sh HISTORY
217 .Nm apm
218 pseudo-device driver appeared in
219 .Nx 1.3 .