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>
This commit is contained in:
parent
55c2e1a3aa
commit
6bf7b49f67
|
@ -173,41 +173,39 @@ static Bool LinuxApmRunning;
|
||||||
static void
|
static void
|
||||||
LinuxApmNotify(int fd, int mask, void *blockData)
|
LinuxApmNotify(int fd, int mask, void *blockData)
|
||||||
{
|
{
|
||||||
if (LinuxApmFd >= 0) {
|
apm_event_t event;
|
||||||
apm_event_t event;
|
Bool running = LinuxApmRunning;
|
||||||
Bool running = LinuxApmRunning;
|
int cmd = APM_IOC_SUSPEND;
|
||||||
int cmd = APM_IOC_SUSPEND;
|
|
||||||
|
|
||||||
while (read(LinuxApmFd, &event, sizeof(event)) == sizeof(event)) {
|
while (read(fd, &event, sizeof(event)) == sizeof(event)) {
|
||||||
switch (event) {
|
switch (event) {
|
||||||
case APM_SYS_STANDBY:
|
case APM_SYS_STANDBY:
|
||||||
case APM_USER_STANDBY:
|
case APM_USER_STANDBY:
|
||||||
running = FALSE;
|
running = FALSE;
|
||||||
cmd = APM_IOC_STANDBY;
|
cmd = APM_IOC_STANDBY;
|
||||||
break;
|
break;
|
||||||
case APM_SYS_SUSPEND:
|
case APM_SYS_SUSPEND:
|
||||||
case APM_USER_SUSPEND:
|
case APM_USER_SUSPEND:
|
||||||
case APM_CRITICAL_SUSPEND:
|
case APM_CRITICAL_SUSPEND:
|
||||||
running = FALSE;
|
running = FALSE;
|
||||||
cmd = APM_IOC_SUSPEND;
|
cmd = APM_IOC_SUSPEND;
|
||||||
break;
|
break;
|
||||||
case APM_NORMAL_RESUME:
|
case APM_NORMAL_RESUME:
|
||||||
case APM_CRITICAL_RESUME:
|
case APM_CRITICAL_RESUME:
|
||||||
case APM_STANDBY_RESUME:
|
case APM_STANDBY_RESUME:
|
||||||
running = TRUE;
|
running = TRUE;
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
}
|
|
||||||
if (running && !LinuxApmRunning) {
|
|
||||||
KdResume();
|
|
||||||
LinuxApmRunning = TRUE;
|
|
||||||
}
|
|
||||||
else if (!running && LinuxApmRunning) {
|
|
||||||
KdSuspend();
|
|
||||||
LinuxApmRunning = FALSE;
|
|
||||||
ioctl(LinuxApmFd, cmd, 0);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (running && !LinuxApmRunning) {
|
||||||
|
KdResume();
|
||||||
|
LinuxApmRunning = TRUE;
|
||||||
|
}
|
||||||
|
else if (!running && LinuxApmRunning) {
|
||||||
|
KdSuspend();
|
||||||
|
LinuxApmRunning = FALSE;
|
||||||
|
ioctl(fd, cmd, 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef FNONBLOCK
|
#ifdef FNONBLOCK
|
||||||
|
|
Loading…
Reference in New Issue