]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/core/timer.h
relicense to LGPLv2.1 (with exceptions)
[thirdparty/systemd.git] / src / core / timer.h
CommitLineData
03467c88 1/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
5cb5a6ff
LP
2
3#ifndef footimerhfoo
4#define footimerhfoo
5
a7334b09
LP
6/***
7 This file is part of systemd.
8
9 Copyright 2010 Lennart Poettering
10
11 systemd is free software; you can redistribute it and/or modify it
5430f7f2
LP
12 under the terms of the GNU Lesser General Public License as published by
13 the Free Software Foundation; either version 2.1 of the License, or
a7334b09
LP
14 (at your option) any later version.
15
16 systemd is distributed in the hope that it will be useful, but
17 WITHOUT ANY WARRANTY; without even the implied warranty of
18 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
5430f7f2 19 Lesser General Public License for more details.
a7334b09 20
5430f7f2 21 You should have received a copy of the GNU Lesser General Public License
a7334b09
LP
22 along with systemd; If not, see <http://www.gnu.org/licenses/>.
23***/
24
5cb5a6ff
LP
25typedef struct Timer Timer;
26
87f0e418 27#include "unit.h"
5cb5a6ff
LP
28
29typedef enum TimerState {
30 TIMER_DEAD,
31 TIMER_WAITING,
32 TIMER_RUNNING,
871d7de4 33 TIMER_ELAPSED,
fdf20a31 34 TIMER_FAILED,
871d7de4
LP
35 _TIMER_STATE_MAX,
36 _TIMER_STATE_INVALID = -1
5cb5a6ff
LP
37} TimerState;
38
871d7de4
LP
39typedef enum TimerBase {
40 TIMER_ACTIVE,
41 TIMER_BOOT,
42 TIMER_STARTUP,
43 TIMER_UNIT_ACTIVE,
44 TIMER_UNIT_INACTIVE,
45 _TIMER_BASE_MAX,
46 _TIMER_BASE_INVALID = -1
47} TimerBase;
48
49typedef struct TimerValue {
871d7de4 50 usec_t value;
871d7de4
LP
51 usec_t next_elapse;
52
871d7de4 53 LIST_FIELDS(struct TimerValue, value);
7fab9d01
LP
54
55 TimerBase base;
56 bool disabled;
871d7de4
LP
57} TimerValue;
58
067d72c9
LP
59typedef enum TimerResult {
60 TIMER_SUCCESS,
61 TIMER_FAILURE_RESOURCES,
62 _TIMER_RESULT_MAX,
63 _TIMER_RESULT_INVALID = -1
64} TimerResult;
65
5cb5a6ff 66struct Timer {
ac155bb8 67 Unit meta;
5cb5a6ff 68
871d7de4 69 LIST_HEAD(TimerValue, values);
5cb5a6ff
LP
70 usec_t next_elapse;
71
01f78473 72 TimerState state, deserialized_state;
57020a3a 73 UnitRef unit;
871d7de4
LP
74
75 Watch timer_watch;
76
067d72c9 77 TimerResult result;
5cb5a6ff
LP
78};
79
871d7de4
LP
80void timer_unit_notify(Unit *u, UnitActiveState new_state);
81
47be870b 82extern const UnitVTable timer_vtable;
5cb5a6ff 83
871d7de4
LP
84const char *timer_state_to_string(TimerState i);
85TimerState timer_state_from_string(const char *s);
86
87const char *timer_base_to_string(TimerBase i);
88TimerBase timer_base_from_string(const char *s);
89
067d72c9
LP
90const char* timer_result_to_string(TimerResult i);
91TimerResult timer_result_from_string(const char *s);
92
5cb5a6ff 93#endif