summaryrefslogtreecommitdiff
path: root/sys/arch/i386/include
diff options
context:
space:
mode:
authorOwain Ainsworth <oga@cvs.openbsd.org>2009-02-26 17:19:48 +0000
committerOwain Ainsworth <oga@cvs.openbsd.org>2009-02-26 17:19:48 +0000
commit1b0c7d8f045e292360d8b3b7e0cf000c18ce1cb2 (patch)
tree10398925663347dafd1909d8a4b4492736f22212 /sys/arch/i386/include
parentea40a2de385d5e8b5b0fb8ebdd11092a68306c43 (diff)
Add a two new ioctls to the apm(4) interface.
APM_IOC_{SUSPEND,STANDBY}_REQ: This is to fix an issue with apm suspend where a call to zzz suspended the machine immediately, not giving anyone listening for apm events (other than apmd) a chance to deal with the upcoming change. This hit X hard since the introduction of drm, since it needs to have time to idle the 3d engine and otherwise get the device into a recoverable state. Such things are needed until we support modesetting in the kernel. Now, instead of forcing a suspend, using ioctl sends out an event similar to if you had put the lid down, giving all userland applications a chance to reply. tested by sthen@ and beck@, especial thanks to sthen for sitting there while I tried to debug this remotely, I owe him beer. Prompted by and ok deraadt@
Diffstat (limited to 'sys/arch/i386/include')
-rw-r--r--sys/arch/i386/include/apmvar.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/sys/arch/i386/include/apmvar.h b/sys/arch/i386/include/apmvar.h
index f2c1aaf41dc..7afcf85352d 100644
--- a/sys/arch/i386/include/apmvar.h
+++ b/sys/arch/i386/include/apmvar.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: apmvar.h,v 1.15 2002/03/14 01:26:33 millert Exp $ */
+/* $OpenBSD: apmvar.h,v 1.16 2009/02/26 17:19:47 oga Exp $ */
/*
* Copyright (c) 1995 John T. Kohl
@@ -287,6 +287,9 @@ struct apm_ctl {
#define APM_PRINT_OFF 1 /* driver power status not displayed */
#define APM_PRINT_PCT 2 /* driver power status only displayed
if the percentage changes */
+#define APM_IOC_STANDBY_REQ _IO('A', 7) /* request standby */
+#define APM_IOC_SUSPEND_REQ _IO('A', 8) /* request suspend */
+
#ifdef _KERNEL
extern void apm_cpu_busy(void);