chiark / gitweb /
event: allow to query userdata and watchdog state
[elogind.git] / src / libsystemd-bus / sd-event.c
index 6af52ecb3cdf45325d91e74d91c0a4801397dbc9..65ee12d5ff5b7abd155e7cbed3794275e648a989 100644 (file)
@@ -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;
+}