diff options
author | Lennart Poettering <lennart@poettering.net> | 2013-12-13 04:14:25 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2013-12-13 15:30:12 +0100 |
commit | 8f726607ece2b49980152a53845aefde858768a5 (patch) | |
tree | b042f7f1a8e7d9ba06741527bc7c03ccc25cc85c /src | |
parent | f9f4dd51bdb016bab84f7fb3cf47a2ad102b4c76 (diff) |
event: allow to query userdata and watchdog state
Diffstat (limited to 'src')
-rw-r--r-- | src/libsystemd-bus/libsystemd-bus.sym | 2 | ||||
-rw-r--r-- | src/libsystemd-bus/sd-event.c | 19 | ||||
-rw-r--r-- | src/systemd/sd-event.h | 2 |
3 files changed, 23 insertions, 0 deletions
diff --git a/src/libsystemd-bus/libsystemd-bus.sym b/src/libsystemd-bus/libsystemd-bus.sym index f3dbb760ce..7dbfcf9acb 100644 --- a/src/libsystemd-bus/libsystemd-bus.sym +++ b/src/libsystemd-bus/libsystemd-bus.sym @@ -239,6 +239,7 @@ global: sd_event_get_now_realtime; sd_event_get_now_monotonic; sd_event_set_watchdog; + sd_event_get_watchdog; sd_event_source_ref; sd_event_source_unref; @@ -250,6 +251,7 @@ global: sd_event_source_get_enabled; sd_event_source_set_enabled; sd_event_source_get_userdata; + sd_event_source_set_userdata; sd_event_source_get_io_fd; sd_event_source_get_io_events; sd_event_source_set_io_events; diff --git a/src/libsystemd-bus/sd-event.c b/src/libsystemd-bus/sd-event.c index 6af52ecb3c..65ee12d5ff 100644 --- a/src/libsystemd-bus/sd-event.c +++ b/src/libsystemd-bus/sd-event.c @@ -1371,6 +1371,17 @@ _public_ void* sd_event_source_get_userdata(sd_event_source *s) { return s->userdata; } +_public_ void *sd_event_source_set_userdata(sd_event_source *s, void *userdata) { + void *ret; + + assert_return(s, NULL); + + ret = s->userdata; + s->userdata = userdata; + + return ret; +} + static usec_t sleep_between(sd_event *e, usec_t a, usec_t b) { usec_t c; assert(e); @@ -2078,6 +2089,7 @@ _public_ int sd_event_set_watchdog(sd_event *e, int b) { int r; assert_return(e, -EINVAL); + assert_return(!event_pid_changed(e), -ECHILD); if (e->watchdog == !!b) return e->watchdog; @@ -2133,3 +2145,10 @@ fail: e->watchdog_fd = -1; return r; } + +_public_ int sd_event_get_watchdog(sd_event *e) { + assert_return(e, -EINVAL); + assert_return(!event_pid_changed(e), -ECHILD); + + return e->watchdog; +} diff --git a/src/systemd/sd-event.h b/src/systemd/sd-event.h index c7c45067fe..cf949be97d 100644 --- a/src/systemd/sd-event.h +++ b/src/systemd/sd-event.h @@ -94,6 +94,7 @@ int sd_event_get_exit_code(sd_event *e, int *code); int sd_event_get_now_realtime(sd_event *e, uint64_t *usec); int sd_event_get_now_monotonic(sd_event *e, uint64_t *usec); int sd_event_set_watchdog(sd_event *e, int b); +int sd_event_get_watchdog(sd_event *e); sd_event_source* sd_event_source_ref(sd_event_source *s); sd_event_source* sd_event_source_unref(sd_event_source *s); @@ -105,6 +106,7 @@ int sd_event_source_set_priority(sd_event_source *s, int priority); int sd_event_source_get_enabled(sd_event_source *s, int *enabled); int sd_event_source_set_enabled(sd_event_source *s, int enabled); void* sd_event_source_get_userdata(sd_event_source *s); +void* sd_event_source_set_userdata(sd_event_source *s, void *userdata); int sd_event_source_get_io_fd(sd_event_source *s); int sd_event_source_get_io_events(sd_event_source *s, uint32_t* events); int sd_event_source_set_io_events(sd_event_source *s, uint32_t events); |