chiark / gitweb /
bf39955e102fb9fe423574ac57c66cbcd3714142
[elogind.git] / src / login / logind-inhibit.h
1 /* SPDX-License-Identifier: LGPL-2.1+ */
2 #pragma once
3
4 /***
5   Copyright 2012 Lennart Poettering
6 ***/
7
8 typedef struct Inhibitor Inhibitor;
9
10 typedef enum InhibitWhat {
11         INHIBIT_SHUTDOWN = 1,
12         INHIBIT_SLEEP = 2,
13         INHIBIT_IDLE = 4,
14         INHIBIT_HANDLE_POWER_KEY = 8,
15         INHIBIT_HANDLE_SUSPEND_KEY = 16,
16         INHIBIT_HANDLE_HIBERNATE_KEY = 32,
17         INHIBIT_HANDLE_LID_SWITCH = 64,
18         _INHIBIT_WHAT_MAX = 128,
19         _INHIBIT_WHAT_INVALID = -1
20 } InhibitWhat;
21
22 typedef enum InhibitMode {
23         INHIBIT_BLOCK,
24         INHIBIT_DELAY,
25         _INHIBIT_MODE_MAX,
26         _INHIBIT_MODE_INVALID = -1
27 } InhibitMode;
28
29 #include "logind.h"
30
31 struct Inhibitor {
32         Manager *manager;
33
34         sd_event_source *event_source;
35
36         char *id;
37         char *state_file;
38
39         bool started;
40
41         InhibitWhat what;
42         char *who;
43         char *why;
44         InhibitMode mode;
45
46         pid_t pid;
47         uid_t uid;
48
49         dual_timestamp since;
50
51         char *fifo_path;
52         int fifo_fd;
53 };
54
55 Inhibitor* inhibitor_new(Manager *m, const char *id);
56 void inhibitor_free(Inhibitor *i);
57
58 int inhibitor_save(Inhibitor *i);
59 int inhibitor_load(Inhibitor *i);
60
61 int inhibitor_start(Inhibitor *i);
62 int inhibitor_stop(Inhibitor *i);
63
64 int inhibitor_create_fifo(Inhibitor *i);
65 void inhibitor_remove_fifo(Inhibitor *i);
66
67 InhibitWhat manager_inhibit_what(Manager *m, InhibitMode mm);
68 bool manager_is_inhibited(Manager *m, InhibitWhat w, InhibitMode mm, dual_timestamp *since, bool ignore_inactive, bool ignore_uid, uid_t uid, Inhibitor **offending);
69
70 const char *inhibit_what_to_string(InhibitWhat k);
71 InhibitWhat inhibit_what_from_string(const char *s);
72
73 const char *inhibit_mode_to_string(InhibitMode k);
74 InhibitMode inhibit_mode_from_string(const char *s);