summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2015-08-27 11:47:26 -0700
committerAdam Jackson <ajax@redhat.com>2016-07-18 15:25:59 -0400
commit6bf7b49f6711c7ed1837283dc04f93f4c1b77ecc (patch)
tree141a1c482a074ad863431a9b9d2bc893e8f1bc30
parent55c2e1a3aa587c58a74066724e11e30b3df267b8 (diff)
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 <keithp@keithp.com> Reviewed-by: Adam Jackson <ajax@redhat.com>
-rw-r--r--hw/kdrive/linux/linux.c64
1 files 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