diff options
author | Lennart Poettering <lennart@poettering.net> | 2012-05-30 15:01:51 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2012-05-30 15:01:51 +0200 |
commit | 069cfc85f876bb6966cb5a9bbe0235f5064622cd (patch) | |
tree | a16d282285e3c34e8af510a86d063bd5ba92804e /src/shared | |
parent | 939b8f14dcd9312140d001b55b4e7a87173682ef (diff) |
logind: optionally handle power, sleep and lid switch events
This takes handling of chassis power and sleep keys as well as the lid
switch over from acpid.
This logic is enabled by default for power and sleep keys, but not for
the lid switch.
If a graphical session is in the foreground no action is taken under the
assumption that the graphical session does this.
Diffstat (limited to 'src/shared')
-rw-r--r-- | src/shared/util.c | 22 | ||||
-rw-r--r-- | src/shared/util.h | 3 |
2 files changed, 25 insertions, 0 deletions
diff --git a/src/shared/util.c b/src/shared/util.c index 7d98dc6e4f..70b159f8c3 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -5639,3 +5639,25 @@ bool in_initrd(void) { return saved; } + +void warn_melody(void) { + int fd; + + fd = open("/dev/console", O_WRONLY|O_CLOEXEC|O_NOCTTY); + if (fd < 0) + return; + + /* Yeah, this is synchronous. Kinda sucks. Bute well... */ + + ioctl(fd, KIOCSOUND, (int)(1193180/440)); + usleep(125*USEC_PER_MSEC); + + ioctl(fd, KIOCSOUND, (int)(1193180/220)); + usleep(125*USEC_PER_MSEC); + + ioctl(fd, KIOCSOUND, (int)(1193180/220)); + usleep(125*USEC_PER_MSEC); + + ioctl(fd, KIOCSOUND, 0); + close_nointr_nofail(fd); +} diff --git a/src/shared/util.h b/src/shared/util.h index 2d890fa6a3..35ff2e3547 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -513,4 +513,7 @@ int can_sleep(const char *type); bool is_valid_documentation_url(const char *url); bool in_initrd(void); + +void warn_melody(void); + #endif |