summaryrefslogtreecommitdiffstats
path: root/sys-utils/rtcwake.c
diff options
context:
space:
mode:
authorPaul Fox2012-03-30 14:16:50 +0200
committerKarel Zak2012-04-02 13:14:00 +0200
commit1707576155daf644c5df3c1776b52fd297ff9318 (patch)
tree0dcd9bf5f54d32d14efc243d3435e9c949b2bb0c /sys-utils/rtcwake.c
parentdelpart: improve error messages (diff)
downloadkernel-qcow2-util-linux-1707576155daf644c5df3c1776b52fd297ff9318.tar.gz
kernel-qcow2-util-linux-1707576155daf644c5df3c1776b52fd297ff9318.tar.xz
kernel-qcow2-util-linux-1707576155daf644c5df3c1776b52fd297ff9318.zip
rtcwake: only invoke RTC_AIE_ON/OFF ioctls in pairs
many rtc drivers don't implement the RTC_AIE_ON/OFF ioctls at all -- so if we never tried to enable the alarm interrupt, don't try to disable it later. Signed-off-by: Paul Fox <pgf@laptop.org>
Diffstat (limited to 'sys-utils/rtcwake.c')
-rw-r--r--sys-utils/rtcwake.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/sys-utils/rtcwake.c b/sys-utils/rtcwake.c
index 4aa5057fe..57e4e8b34 100644
--- a/sys-utils/rtcwake.c
+++ b/sys-utils/rtcwake.c
@@ -63,6 +63,7 @@ enum ClockMode {
static unsigned verbose;
static unsigned dryrun;
+static unsigned ioctl_aie_on; // ioctl(AIE_ON) succeeded
enum ClockMode clock_mode = CM_AUTO;
static struct option long_options[] = {
@@ -241,6 +242,7 @@ static int setup_alarm(int fd, time_t *wakeup)
warn(_("enable rtc alarm failed"));
return -1;
}
+ ioctl_aie_on = 1;
} else {
warn(_("set rtc wake alarm failed"));
return -1;
@@ -613,7 +615,8 @@ int main(int argc, char **argv)
suspend_system(suspend);
}
- if (!dryrun && ioctl(fd, RTC_AIE_OFF, 0) < 0)
+ if (!dryrun && ioctl_aie_on && ioctl(fd, RTC_AIE_OFF, 0) < 0)
+
warn(_("disable rtc alarm interrupt failed"));
close(fd);