timer: implement calendar time events

This commit is contained in:
Lennart Poettering
2012-11-23 21:37:58 +01:00
parent 8a1175118e
commit 36697dc019
16 changed files with 1293 additions and 108 deletions
+11 -5
View File
@@ -24,6 +24,7 @@
typedef struct Timer Timer;
#include "unit.h"
#include "calendarspec.h"
typedef enum TimerState {
TIMER_DEAD,
@@ -41,18 +42,21 @@ typedef enum TimerBase {
TIMER_STARTUP,
TIMER_UNIT_ACTIVE,
TIMER_UNIT_INACTIVE,
TIMER_CALENDAR,
_TIMER_BASE_MAX,
_TIMER_BASE_INVALID = -1
} TimerBase;
typedef struct TimerValue {
TimerBase base;
bool disabled;
clockid_t clock_id;
usec_t value;
CalendarSpec *calendar_spec;
usec_t next_elapse;
LIST_FIELDS(struct TimerValue, value);
TimerBase base;
bool disabled;
} TimerValue;
typedef enum TimerResult {
@@ -66,12 +70,14 @@ struct Timer {
Unit meta;
LIST_HEAD(TimerValue, values);
usec_t next_elapse;
usec_t next_elapse_monotonic;
usec_t next_elapse_realtime;
TimerState state, deserialized_state;
UnitRef unit;
Watch timer_watch;
Watch monotonic_watch;
Watch realtime_watch;
TimerResult result;
};