From 6bf7b49f6711c7ed1837283dc04f93f4c1b77ecc Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Thu, 27 Aug 2015 11:47:26 -0700 Subject: hw/kdrive: Use passed-in fd for kdrive/linux APM monitoring [v2] This is a cleanup, proposed by Adam Jackson, but wasn't merged with the original NotifyFD changes. Signed-off-by: Keith Packard Reviewed-by: Adam Jackson --- hw/kdrive/linux/linux.c | 64 ++++++++++++++++++++++++------------------------- 1 file changed, 31 insertions(+), 33 deletions(-) diff --git a/hw/kdrive/linux/linux.c b/hw/kdrive/linux/linux.c index 76daaf23e..56c2cb79c 100644 --- a/hw/kdrive/linux/linux.c +++ b/hw/kdrive/linux/linux.c @@ -173,41 +173,39 @@ static Bool LinuxApmRunning; static void LinuxApmNotify(int fd, int mask, void *blockData) { - if (LinuxApmFd >= 0) { - apm_event_t event; - Bool running = LinuxApmRunning; - int cmd = APM_IOC_SUSPEND; - - while (read(LinuxApmFd, &event, sizeof(event)) == sizeof(event)) { - switch (event) { - case APM_SYS_STANDBY: - case APM_USER_STANDBY: - running = FALSE; - cmd = APM_IOC_STANDBY; - break; - case APM_SYS_SUSPEND: - case APM_USER_SUSPEND: - case APM_CRITICAL_SUSPEND: - running = FALSE; - cmd = APM_IOC_SUSPEND; - break; - case APM_NORMAL_RESUME: - case APM_CRITICAL_RESUME: - case APM_STANDBY_RESUME: - running = TRUE; - break; - } - } - if (running && !LinuxApmRunning) { - KdResume(); - LinuxApmRunning = TRUE; - } - else if (!running && LinuxApmRunning) { - KdSuspend(); - LinuxApmRunning = FALSE; - ioctl(LinuxApmFd, cmd, 0); + apm_event_t event; + Bool running = LinuxApmRunning; + int cmd = APM_IOC_SUSPEND; + + while (read(fd, &event, sizeof(event)) == sizeof(event)) { + switch (event) { + case APM_SYS_STANDBY: + case APM_USER_STANDBY: + running = FALSE; + cmd = APM_IOC_STANDBY; + break; + case APM_SYS_SUSPEND: + case APM_USER_SUSPEND: + case APM_CRITICAL_SUSPEND: + running = FALSE; + cmd = APM_IOC_SUSPEND; + break; + case APM_NORMAL_RESUME: + case APM_CRITICAL_RESUME: + case APM_STANDBY_RESUME: + running = TRUE; + break; } } + if (running && !LinuxApmRunning) { + KdResume(); + LinuxApmRunning = TRUE; + } + else if (!running && LinuxApmRunning) { + KdSuspend(); + LinuxApmRunning = FALSE; + ioctl(fd, cmd, 0); + } } #ifdef FNONBLOCK -- cgit v1.2.3