summaryrefslogtreecommitdiff
path: root/src/timer.h
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2010-05-24 01:45:54 +0200
committerLennart Poettering <lennart@poettering.net>2010-05-24 01:45:54 +0200
commit871d7de47c13ee6cd78b8eefdf9128be3c740ac0 (patch)
treec92b146f086cdf7a58145e4e744133e645f8c8e0 /src/timer.h
parent4288f619215e3dda0b75113d78e4fb7ba219ed58 (diff)
timer: fully implement timer units
Diffstat (limited to 'src/timer.h')
-rw-r--r--src/timer.h45
1 files changed, 41 insertions, 4 deletions
diff --git a/src/timer.h b/src/timer.h
index 0ec3e0d9bb..69c5609a9c 100644
--- a/src/timer.h
+++ b/src/timer.h
@@ -30,20 +30,57 @@ typedef enum TimerState {
TIMER_DEAD,
TIMER_WAITING,
TIMER_RUNNING,
- _TIMER_STATE_MAX
+ TIMER_ELAPSED,
+ TIMER_MAINTAINANCE,
+ _TIMER_STATE_MAX,
+ _TIMER_STATE_INVALID = -1
} TimerState;
+typedef enum TimerBase {
+ TIMER_ACTIVE,
+ TIMER_BOOT,
+ TIMER_STARTUP,
+ TIMER_UNIT_ACTIVE,
+ TIMER_UNIT_INACTIVE,
+ _TIMER_BASE_MAX,
+ _TIMER_BASE_INVALID = -1
+} TimerBase;
+
+typedef struct TimerValue {
+ TimerBase base;
+ usec_t value;
+
+ usec_t next_elapse;
+
+ bool disabled;
+
+ LIST_FIELDS(struct TimerValue, value);
+} TimerValue;
+
struct Timer {
Meta meta;
- TimerState state;
+ LIST_HEAD(TimerValue, values);
+
+ TimerState state, deserialized_state;
- clockid_t clock_id;
usec_t next_elapse;
- Service *service;
+ Unit *unit;
+
+ Watch timer_watch;
+
+ bool failure;
};
+void timer_unit_notify(Unit *u, UnitActiveState new_state);
+
extern const UnitVTable timer_vtable;
+const char *timer_state_to_string(TimerState i);
+TimerState timer_state_from_string(const char *s);
+
+const char *timer_base_to_string(TimerBase i);
+TimerBase timer_base_from_string(const char *s);
+
#endif