diff --git a/configure.ac b/configure.ac index af5df61dc..f91242267 100644 --- a/configure.ac +++ b/configure.ac @@ -237,15 +237,6 @@ dnl OpenBSD /dev/xf86 aperture driver if test -c /dev/xf86 ; then AC_DEFINE(HAS_APERTURE_DRV, 1, [System has /dev/xf86 aperture driver]) fi - -dnl BSD APM support -AC_CHECK_HEADER([machine/apmvar.h],[ - AC_CHECK_HEADER([sys/event.h], - ac_cv_BSD_KQUEUE_APM=yes, - ac_cv_BSD_APM=yes)]) - -AM_CONDITIONAL(BSD_APM, [test "x$ac_cv_BSD_APM" = xyes]) -AM_CONDITIONAL(BSD_KQUEUE_APM, [test "x$ac_cv_BSD_KQUEUE_APM" = xyes]) dnl glibc backtrace support check AC_CHECK_HEADER([execinfo.h],[ diff --git a/hw/xfree86/os-support/bsd/Makefile.am b/hw/xfree86/os-support/bsd/Makefile.am index 90d9e555f..2311dc242 100644 --- a/hw/xfree86/os-support/bsd/Makefile.am +++ b/hw/xfree86/os-support/bsd/Makefile.am @@ -1,15 +1,7 @@ noinst_LTLIBRARIES = libbsd.la -# APM support. -if BSD_KQUEUE_APM -APM_SOURCES = $(srcdir)/bsd_kqueue_apm.c -else -if BSD_APM -APM_SOURCES = $(srcdir)/bsd_apm.c -else +# No APM support. APM_SOURCES = $(srcdir)/../shared/pm_noop.c -endif -endif if FREEBSD_KLDLOAD KMOD_SOURCES = bsd_kmod.c diff --git a/hw/xfree86/os-support/bsd/bsd_apm.c b/hw/xfree86/os-support/bsd/bsd_apm.c deleted file mode 100644 index dab0a9a7d..000000000 --- a/hw/xfree86/os-support/bsd/bsd_apm.c +++ /dev/null @@ -1,137 +0,0 @@ -#ifdef HAVE_XORG_CONFIG_H -#include -#endif - -#include -#include "os.h" -#include "xf86.h" -#include "xf86Priv.h" -#define XF86_OS_PRIVS -#include "xf86_OSproc.h" -#include "xf86_OSlib.h" - -#include - -#define APM_DEVICE "/dev/apm" - -static void *APMihPtr = NULL; -static void bsdCloseAPM(void); - -static struct { - u_int apmBsd; - pmEvent xf86; -} bsdToXF86Array[] = { - {APM_STANDBY_REQ, XF86_APM_SYS_STANDBY}, - {APM_SUSPEND_REQ, XF86_APM_SYS_SUSPEND}, - {APM_NORMAL_RESUME, XF86_APM_NORMAL_RESUME}, - {APM_CRIT_RESUME, XF86_APM_CRITICAL_RESUME}, - {APM_BATTERY_LOW, XF86_APM_LOW_BATTERY}, - {APM_POWER_CHANGE, XF86_APM_POWER_STATUS_CHANGE}, - {APM_UPDATE_TIME, XF86_APM_UPDATE_TIME}, - {APM_CRIT_SUSPEND_REQ, XF86_APM_CRITICAL_SUSPEND}, - {APM_USER_STANDBY_REQ, XF86_APM_USER_STANDBY}, - {APM_USER_SUSPEND_REQ, XF86_APM_USER_SUSPEND}, - {APM_SYS_STANDBY_RESUME, XF86_APM_STANDBY_RESUME}, -#ifdef APM_CAPABILITY_CHANGE - {APM_CAPABILITY_CHANGE, XF86_APM_CAPABILITY_CHANGED}, -#endif -}; - -static pmEvent -bsdToXF86(int type) -{ - int i; - - for (i = 0; i < ARRAY_SIZE(bsdToXF86Array); i++) { - if (type == bsdToXF86Array[i].apmBsd) { - return bsdToXF86Array[i].xf86; - } - } - return XF86_APM_UNKNOWN; -} - -/* - * APM events can be requested direclty from /dev/apm - */ -static int -bsdPMGetEventFromOS(int fd, pmEvent * events, int num) -{ - struct apm_event_info bsdEvent; - int i; - - for (i = 0; i < num; i++) { - - if (ioctl(fd, APM_IOC_NEXTEVENT, &bsdEvent) < 0) { - if (errno != EAGAIN) { - xf86Msg(X_WARNING, "bsdPMGetEventFromOS: APM_IOC_NEXTEVENT" - " %s\n", strerror(errno)); - } - break; - } - events[i] = bsdToXF86(bsdEvent.type); - } - return i; -} - -/* - * XXX This won't work on /dev/apm ! - * We should either use /dev/apm_ctl (and kill apmd(8)) - * or talk to apmd (but its protocol is not publically available)... - */ -static pmWait -bsdPMConfirmEventToOs(int fd, pmEvent event) -{ - switch (event) { - case XF86_APM_SYS_STANDBY: - case XF86_APM_USER_STANDBY: - if (ioctl(fd, APM_IOC_STANDBY, NULL) == 0) - return PM_WAIT; /* should we stop the Xserver in standby, too? */ - else - return PM_NONE; - case XF86_APM_SYS_SUSPEND: - case XF86_APM_CRITICAL_SUSPEND: - case XF86_APM_USER_SUSPEND: - if (ioctl(fd, APM_IOC_SUSPEND, NULL) == 0) - return PM_WAIT; - else - return PM_NONE; - case XF86_APM_STANDBY_RESUME: - case XF86_APM_NORMAL_RESUME: - case XF86_APM_CRITICAL_RESUME: - case XF86_APM_STANDBY_FAILED: - case XF86_APM_SUSPEND_FAILED: - return PM_CONTINUE; - default: - return PM_NONE; - } -} - -PMClose -xf86OSPMOpen(void) -{ - int fd; - - if (APMihPtr || !xf86Info.pmFlag) { - return NULL; - } - - if ((fd = open(APM_DEVICE, O_RDWR)) == -1) { - return NULL; - } - xf86PMGetEventFromOs = bsdPMGetEventFromOS; - xf86PMConfirmEventToOs = bsdPMConfirmEventToOs; - APMihPtr = xf86AddGeneralHandler(fd, xf86HandlePMEvents, NULL); - return bsdCloseAPM; -} - -static void -bsdCloseAPM(void) -{ - int fd; - - if (APMihPtr) { - fd = xf86RemoveGeneralHandler(APMihPtr); - close(fd); - APMihPtr = NULL; - } -} diff --git a/hw/xfree86/os-support/bsd/bsd_kqueue_apm.c b/hw/xfree86/os-support/bsd/bsd_kqueue_apm.c deleted file mode 100644 index b046a1aa8..000000000 --- a/hw/xfree86/os-support/bsd/bsd_kqueue_apm.c +++ /dev/null @@ -1,199 +0,0 @@ -/* - * Copyright (C) 2001 The XFree86 Project, Inc. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES - * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR - * THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name of the XFree86 Project - * shall not be used in advertising or otherwise to promote the sale, use - * or other dealings in this Software without prior written authorization - * from the XFree86 Project. - */ - -#ifdef HAVE_XORG_CONFIG_H -#include -#endif - -#include -#include "os.h" -#include "xf86.h" -#include "xf86Priv.h" -#define XF86_OS_PRIVS -#include "xf86_OSproc.h" -#include "xf86_OSlib.h" - -#include -#include - -#define _PATH_APM_SOCKET "/var/run/apmdev" -#define _PATH_APM_DEV "/dev/apm" -#define _PATH_APM_CTLDEV "/dev/apmctl" - -static void *APMihPtr = NULL; -static int devFd = -1; -static int ctlFd = -1; -static void bsdCloseAPM(void); - -static struct { - u_int apmBsd; - pmEvent xf86; -} bsdToXF86Array[] = { - {APM_STANDBY_REQ, XF86_APM_SYS_STANDBY}, - {APM_SUSPEND_REQ, XF86_APM_SYS_SUSPEND}, - {APM_NORMAL_RESUME, XF86_APM_NORMAL_RESUME}, - {APM_CRIT_RESUME, XF86_APM_CRITICAL_RESUME}, - {APM_BATTERY_LOW, XF86_APM_LOW_BATTERY}, - {APM_POWER_CHANGE, XF86_APM_POWER_STATUS_CHANGE}, - {APM_UPDATE_TIME, XF86_APM_UPDATE_TIME}, - {APM_CRIT_SUSPEND_REQ, XF86_APM_CRITICAL_SUSPEND}, - {APM_USER_STANDBY_REQ, XF86_APM_USER_STANDBY}, - {APM_USER_SUSPEND_REQ, XF86_APM_USER_SUSPEND}, - {APM_SYS_STANDBY_RESUME, XF86_APM_STANDBY_RESUME}, -#ifdef APM_CAPABILITY_CHANGE - {APM_CAPABILITY_CHANGE, XF86_APM_CAPABILITY_CHANGED}, -#endif -}; - -static pmEvent -bsdToXF86(int type) -{ - int i; - - for (i = 0; i < ARRAY_SIZE(bsdToXF86Array); i++) { - if (type == bsdToXF86Array[i].apmBsd) { - return bsdToXF86Array[i].xf86; - } - } - return XF86_APM_UNKNOWN; -} - -/* - * APM events can be requested direclty from /dev/apm - */ -static int -bsdPMGetEventFromOS(int kq, pmEvent * events, int num) -{ - struct kevent ev; - int i, result; - struct timespec ts = { 0, 0 }; - - for (i = 0; i < num; i++) { - result = kevent(kq, NULL, 0, &ev, 1, &ts); - if (result == 0 || APM_EVENT_TYPE(ev.data) == APM_NOEVENT) { - /* no event */ - break; - } - else if (result < 0) { - xf86Msg(X_WARNING, "bsdPMGetEventFromOS: kevent returns" - " %s\n", strerror(errno)); - break; - } - events[i] = bsdToXF86(APM_EVENT_TYPE(ev.data)); - } - return i; -} - -/* - * If apmd(8) is running, he will get the events and handle them, - * so, we've nothing to do here. - * Otherwise, opening /dev/apmctl will succeed and we have to send the - * confirmations to /dev/apmctl. - */ -static pmWait -bsdPMConfirmEventToOs(int dummyfd, pmEvent event) -{ - if (ctlFd < 0) { - if ((ctlFd = open(_PATH_APM_CTLDEV, O_RDWR)) < 0) { - return PM_NONE; - } - } - /* apmctl open succeedeed */ - switch (event) { - case XF86_APM_SYS_STANDBY: - case XF86_APM_USER_STANDBY: - if (ioctl(ctlFd, APM_IOC_STANDBY, NULL) == 0) - return PM_WAIT; /* should we stop the Xserver in standby, too? */ - else - return PM_NONE; - - case XF86_APM_SYS_SUSPEND: - case XF86_APM_CRITICAL_SUSPEND: - case XF86_APM_USER_SUSPEND: - if (ioctl(ctlFd, APM_IOC_SUSPEND, NULL) == 0) - return PM_WAIT; - else - return PM_NONE; - break; - case XF86_APM_STANDBY_RESUME: - case XF86_APM_NORMAL_RESUME: - case XF86_APM_CRITICAL_RESUME: - case XF86_APM_STANDBY_FAILED: - case XF86_APM_SUSPEND_FAILED: - return PM_CONTINUE; - break; - default: - return PM_NONE; - } -} - -PMClose -xf86OSPMOpen(void) -{ - int kq; - struct kevent ev; - - if (APMihPtr || !xf86Info.pmFlag) { - return NULL; - } - if ((devFd = open(_PATH_APM_DEV, O_RDONLY)) == -1) { - return NULL; - } - if ((kq = kqueue()) <= 0) { - close(devFd); - return NULL; - } - EV_SET(&ev, devFd, EVFILT_READ, EV_ADD | EV_ENABLE | EV_CLEAR, 0, 0, NULL); - if (kevent(kq, &ev, 1, NULL, 0, NULL) < 0) { - close(devFd); - return NULL; - } - - xf86PMGetEventFromOs = bsdPMGetEventFromOS; - xf86PMConfirmEventToOs = bsdPMConfirmEventToOs; - APMihPtr = xf86AddGeneralHandler(kq, xf86HandlePMEvents, NULL); - return bsdCloseAPM; -} - -static void -bsdCloseAPM(void) -{ - int kq; - - if (APMihPtr) { - kq = xf86RemoveGeneralHandler(APMihPtr); - close(devFd); - devFd = -1; - close(kq); - if (ctlFd >= 0) { - close(ctlFd); - ctlFd = -1; - } - APMihPtr = NULL; - } -} diff --git a/hw/xfree86/os-support/meson.build b/hw/xfree86/os-support/meson.build index 6e426665a..1f490a668 100644 --- a/hw/xfree86/os-support/meson.build +++ b/hw/xfree86/os-support/meson.build @@ -96,18 +96,9 @@ elif host_machine.system().endswith('bsd') 'bsd/bsd_VTsw.c', 'bsd/bsd_bell.c', 'bsd/bsd_init.c', + 'shared/pm_noop.c' ] - if cc.has_header('machine/apmvar.h') - if cc.has_header('sys/event.h') - srcs_xorg_os_support += 'bsd/bsd_kqueue_apm.c' - else - srcs_xorg_os_support += 'bsd/bsd_apm.c' - endif - else - srcs_xorg_os_support += 'shared/pm_noop.c' - endif - if host_machine.cpu_family() == 'x86_64' srcs_xorg_os_support += 'bsd/i386_video.c' if host_machine.system() == 'netbsd'