1 /*- 2 * APM (Advanced Power Management) Event Dispatcher 3 * 4 * Copyright (c) 1999 Mitsuru IWASAKI <iwasaki@FreeBSD.org> 5 * Copyright (c) 1999 KOIE Hidetaka <koie@suri.co.jp> 6 * All rights reserved. 7 * 8 * Redistribution and use in source and binary forms, with or without 9 * modification, are permitted provided that the following conditions 10 * are met: 11 * 1. Redistributions of source code must retain the above copyright 12 * notice, this list of conditions and the following disclaimer. 13 * 2. Redistributions in binary form must reproduce the above copyright 14 * notice, this list of conditions and the following disclaimer in the 15 * documentation and/or other materials provided with the distribution. 16 * 17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 18 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 21 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 23 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27 * SUCH DAMAGE. 28 * 29 * $Id: apmd.h,v 1.1.3.8 1999/06/18 04:07:05 koie Exp $ 30 */ 31 32 #define APMD_CONFIGFILE "/etc/apmd.conf" 33 #define APM_CTL_DEVICEFILE "/dev/apmctl" 34 #define APMD_PIDFILE "/var/run/apmd.pid" 35 #define NICE_INCR -20 36 37 enum { 38 EVENT_NOEVENT, 39 EVENT_STANDBYREQ, 40 EVENT_SUSPENDREQ, 41 EVENT_NORMRESUME, 42 EVENT_CRITRESUME, 43 EVENT_BATTERYLOW, 44 EVENT_POWERSTATECHANGE, 45 EVENT_UPDATETIME, 46 EVENT_CRITSUSPEND, 47 EVENT_USERSTANDBYREQ, 48 EVENT_USERSUSPENDREQ, 49 EVENT_STANDBYRESUME, 50 EVENT_CAPABILITIESCHANGE, 51 EVENT_MAX 52 }; 53 54 struct event_cmd_op { 55 int (* act) __P((void *this)); 56 void (* dump) __P((void *this, FILE * fp)); 57 struct event_cmd * (* clone) __P((void *this)); 58 void (* free) __P((void *this)); 59 }; 60 struct event_cmd { 61 struct event_cmd * next; 62 size_t len; 63 char * name; 64 struct event_cmd_op * op; 65 }; 66 struct event_cmd_exec { 67 struct event_cmd evcmd; 68 char * line; /* Command line */ 69 }; 70 struct event_cmd_reject { 71 struct event_cmd evcmd; 72 }; 73 74 struct event_config { 75 const char *name; 76 struct event_cmd * cmdlist; 77 int rejectable; 78 }; 79 80 extern struct event_cmd_op event_cmd_exec_ops; 81 extern struct event_cmd_op event_cmd_reject_ops; 82 extern struct event_config events[EVENT_MAX]; 83 84 extern int register_apm_event_handlers( 85 bitstr_t bit_decl(evlist, EVENT_MAX), 86 struct event_cmd *cmdlist); 87 extern void free_event_cmd_list(struct event_cmd *p); 88