]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/core/timer.h
When warning about unsupported options, be more detailed
[thirdparty/systemd.git] / src / core / timer.h
CommitLineData
03467c88 1/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
5cb5a6ff 2
c2f1db8f 3#pragma once
5cb5a6ff 4
a7334b09
LP
5/***
6 This file is part of systemd.
7
8 Copyright 2010 Lennart Poettering
9
10 systemd is free software; you can redistribute it and/or modify it
5430f7f2
LP
11 under the terms of the GNU Lesser General Public License as published by
12 the Free Software Foundation; either version 2.1 of the License, or
a7334b09
LP
13 (at your option) any later version.
14
15 systemd is distributed in the hope that it will be useful, but
16 WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
5430f7f2 18 Lesser General Public License for more details.
a7334b09 19
5430f7f2 20 You should have received a copy of the GNU Lesser General Public License
a7334b09
LP
21 along with systemd; If not, see <http://www.gnu.org/licenses/>.
22***/
23
5cb5a6ff
LP
24typedef struct Timer Timer;
25
87f0e418 26#include "unit.h"
36697dc0 27#include "calendarspec.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,
36697dc0 45 TIMER_CALENDAR,
871d7de4
LP
46 _TIMER_BASE_MAX,
47 _TIMER_BASE_INVALID = -1
48} TimerBase;
49
50typedef struct TimerValue {
36697dc0
LP
51 TimerBase base;
52 bool disabled;
36697dc0 53
b719810d
LP
54 usec_t value; /* only for monotonic events */
55 CalendarSpec *calendar_spec; /* only for calendar events */
871d7de4
LP
56 usec_t next_elapse;
57
871d7de4
LP
58 LIST_FIELDS(struct TimerValue, value);
59} TimerValue;
60
067d72c9
LP
61typedef enum TimerResult {
62 TIMER_SUCCESS,
63 TIMER_FAILURE_RESOURCES,
64 _TIMER_RESULT_MAX,
65 _TIMER_RESULT_INVALID = -1
66} TimerResult;
67
5cb5a6ff 68struct Timer {
ac155bb8 69 Unit meta;
5cb5a6ff 70
9f5eb56a
LP
71 usec_t accuracy_usec;
72
871d7de4 73 LIST_HEAD(TimerValue, values);
36697dc0 74 usec_t next_elapse_realtime;
dedabea4
LP
75 usec_t next_elapse_monotonic_or_boottime;
76 dual_timestamp last_trigger;
5cb5a6ff 77
01f78473 78 TimerState state, deserialized_state;
871d7de4 79
718db961
LP
80 sd_event_source *monotonic_event_source;
81 sd_event_source *realtime_event_source;
871d7de4 82
067d72c9 83 TimerResult result;
e41e1943 84
06642d17 85 bool persistent;
dedabea4 86 bool wake_system;
06642d17
LP
87
88 char *stamp_path;
5cb5a6ff
LP
89};
90
74051b9b
LP
91void timer_free_values(Timer *t);
92
47be870b 93extern const UnitVTable timer_vtable;
5cb5a6ff 94
44a6b1b6
ZJS
95const char *timer_state_to_string(TimerState i) _const_;
96TimerState timer_state_from_string(const char *s) _pure_;
871d7de4 97
44a6b1b6
ZJS
98const char *timer_base_to_string(TimerBase i) _const_;
99TimerBase timer_base_from_string(const char *s) _pure_;
871d7de4 100
44a6b1b6
ZJS
101const char* timer_result_to_string(TimerResult i) _const_;
102TimerResult timer_result_from_string(const char *s) _pure_;