chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
core: fix cgroups-agent match for kdbus
[elogind.git]
/
src
/
core
/
timer.c
diff --git
a/src/core/timer.c
b/src/core/timer.c
index 9155dfc81fccedad8cef9638513d60a034da4407..79a7540553ab0ed0f5b03cdf73482d41d562a566 100644
(file)
--- a/
src/core/timer.c
+++ b/
src/core/timer.c
@@
-28,7
+28,6
@@
#include "special.h"
#include "bus-util.h"
#include "bus-error.h"
#include "special.h"
#include "bus-util.h"
#include "bus-error.h"
-#include "mkdir.h"
static const UnitActiveState state_translation_table[_TIMER_STATE_MAX] = {
[TIMER_DEAD] = UNIT_INACTIVE,
static const UnitActiveState state_translation_table[_TIMER_STATE_MAX] = {
[TIMER_DEAD] = UNIT_INACTIVE,
@@
-268,7
+267,12
@@
static void timer_set_state(Timer *t, TimerState state) {
static void timer_enter_waiting(Timer *t, bool initial);
static void timer_enter_waiting(Timer *t, bool initial);
-static int timer_coldplug(Unit *u) {
+static int timer_enter_waiting_coldplug(Unit *u) {
+ timer_enter_waiting(TIMER(u), false);
+ return 0;
+}
+
+static int timer_coldplug(Unit *u, Hashmap *deferred_work) {
Timer *t = TIMER(u);
assert(t);
Timer *t = TIMER(u);
assert(t);
@@
-276,9
+280,10
@@
static int timer_coldplug(Unit *u) {
if (t->deserialized_state != t->state) {
if (t->deserialized_state != t->state) {
- if (t->deserialized_state == TIMER_WAITING)
- timer_enter_waiting(t, false);
- else
+ if (t->deserialized_state == TIMER_WAITING) {
+ hashmap_put(deferred_work, u, &timer_enter_waiting_coldplug);
+ timer_set_state(t, TIMER_WAITING);
+ } else
timer_set_state(t, t->deserialized_state);
}
timer_set_state(t, t->deserialized_state);
}
@@
-548,7
+553,7
@@
static int timer_start(Unit *u) {
t->result = TIMER_SUCCESS;
timer_enter_waiting(t, true);
t->result = TIMER_SUCCESS;
timer_enter_waiting(t, true);
- return
0
;
+ return
1
;
}
static int timer_stop(Unit *u) {
}
static int timer_stop(Unit *u) {
@@
-558,7
+563,7
@@
static int timer_stop(Unit *u) {
assert(t->state == TIMER_WAITING || t->state == TIMER_RUNNING || t->state == TIMER_ELAPSED);
timer_enter_dead(t, TIMER_SUCCESS);
assert(t->state == TIMER_WAITING || t->state == TIMER_RUNNING || t->state == TIMER_ELAPSED);
timer_enter_dead(t, TIMER_SUCCESS);
- return
0
;
+ return
1
;
}
static int timer_serialize(Unit *u, FILE *f, FDSet *fds) {
}
static int timer_serialize(Unit *u, FILE *f, FDSet *fds) {
@@
-748,6
+753,7
@@
const UnitVTable timer_vtable = {
"Unit\0"
"Timer\0"
"Install\0",
"Unit\0"
"Timer\0"
"Install\0",
+ .private_section = "Timer",
.init = timer_init,
.done = timer_done,
.init = timer_init,
.done = timer_done,
@@
-773,4
+779,7
@@
const UnitVTable timer_vtable = {
.bus_interface = "org.freedesktop.systemd1.Timer",
.bus_vtable = bus_timer_vtable,
.bus_interface = "org.freedesktop.systemd1.Timer",
.bus_vtable = bus_timer_vtable,
+ .bus_set_property = bus_timer_set_property,
+
+ .can_transient = true,
};
};