X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Flibelogind%2Fsd-event%2Fsd-event.c;h=871ea8d60c2c1f5a26c28dea1015108bd159fdde;hp=00880c983b543a563c0388d5346bbe73197d0a3d;hb=1e6fb880e7b714bee3c348bcdcc8194a2abf5906;hpb=2f21885d9173a6fae63cc883fa8703b53da2b57b diff --git a/src/libelogind/sd-event/sd-event.c b/src/libelogind/sd-event/sd-event.c index 00880c983..871ea8d60 100644 --- a/src/libelogind/sd-event/sd-event.c +++ b/src/libelogind/sd-event/sd-event.c @@ -468,24 +468,22 @@ static bool event_pid_changed(sd_event *e) { return e->original_pid != getpid(); } -static int source_io_unregister(sd_event_source *s) { +static void source_io_unregister(sd_event_source *s) { int r; assert(s); assert(s->type == SOURCE_IO); if (event_pid_changed(s->event)) - return 0; + return; if (!s->io.registered) - return 0; + return; r = epoll_ctl(s->event->epoll_fd, EPOLL_CTL_DEL, s->io.fd, NULL); - if (r < 0) - return -errno; + assert_log(r >= 0); s->io.registered = false; - return 0; } static int source_io_register( @@ -519,6 +517,8 @@ static int source_io_register( return 0; } +/// UNNEEDED by elogind +#if 0 static clockid_t event_source_type_to_clock(EventSourceType t) { switch (t) { @@ -542,6 +542,7 @@ static clockid_t event_source_type_to_clock(EventSourceType t) { return (clockid_t) -1; } } +#endif // 0 static EventSourceType clock_to_event_source_type(clockid_t clock) { @@ -818,7 +819,7 @@ _public_ int sd_event_add_io( int r; assert_return(e, -EINVAL); - assert_return(fd >= 0, -EINVAL); + assert_return(fd >= 0, -EBADF); assert_return(!(events & ~(EPOLLIN|EPOLLOUT|EPOLLRDHUP|EPOLLPRI|EPOLLERR|EPOLLHUP|EPOLLET)), -EINVAL); assert_return(callback, -EINVAL); assert_return(e->state != SD_EVENT_FINISHED, -ESTALE); @@ -1231,6 +1232,8 @@ _public_ int sd_event_add_exit( return 0; } +/// UNNEEDED by elogind +#if 0 _public_ sd_event_source* sd_event_source_ref(sd_event_source *s) { assert_return(s, NULL); @@ -1239,6 +1242,7 @@ _public_ sd_event_source* sd_event_source_ref(sd_event_source *s) { return s; } +#endif // 0 _public_ sd_event_source* sd_event_source_unref(sd_event_source *s) { @@ -1276,6 +1280,8 @@ _public_ int sd_event_source_set_description(sd_event_source *s, const char *des return free_and_strdup(&s->description, description); } +/// UNNEEDED by elogind +#if 0 _public_ int sd_event_source_get_description(sd_event_source *s, const char **description) { assert_return(s, -EINVAL); assert_return(description, -EINVAL); @@ -1285,6 +1291,7 @@ _public_ int sd_event_source_get_description(sd_event_source *s, const char **de *description = s->description; return 0; } +#endif // 0 _public_ sd_event *sd_event_source_get_event(sd_event_source *s) { assert_return(s, NULL); @@ -1292,6 +1299,8 @@ _public_ sd_event *sd_event_source_get_event(sd_event_source *s) { return s->event; } +/// UNNEEDED by elogind +#if 0 _public_ int sd_event_source_get_pending(sd_event_source *s) { assert_return(s, -EINVAL); assert_return(s->type != SOURCE_EXIT, -EDOM); @@ -1308,12 +1317,13 @@ _public_ int sd_event_source_get_io_fd(sd_event_source *s) { return s->io.fd; } +#endif // 0 _public_ int sd_event_source_set_io_fd(sd_event_source *s, int fd) { int r; assert_return(s, -EINVAL); - assert_return(fd >= 0, -EINVAL); + assert_return(fd >= 0, -EBADF); assert_return(s->type == SOURCE_IO, -EDOM); assert_return(!event_pid_changed(s->event), -ECHILD); @@ -1345,6 +1355,8 @@ _public_ int sd_event_source_set_io_fd(sd_event_source *s, int fd) { return 0; } +/// UNNEEDED by elogind +#if 0 _public_ int sd_event_source_get_io_events(sd_event_source *s, uint32_t* events) { assert_return(s, -EINVAL); assert_return(events, -EINVAL); @@ -1354,6 +1366,7 @@ _public_ int sd_event_source_get_io_events(sd_event_source *s, uint32_t* events) *events = s->io.events; return 0; } +#endif // 0 _public_ int sd_event_source_set_io_events(sd_event_source *s, uint32_t events) { int r; @@ -1380,6 +1393,8 @@ _public_ int sd_event_source_set_io_events(sd_event_source *s, uint32_t events) return 0; } +/// UNNEEDED by elogind +#if 0 _public_ int sd_event_source_get_io_revents(sd_event_source *s, uint32_t* revents) { assert_return(s, -EINVAL); assert_return(revents, -EINVAL); @@ -1405,6 +1420,7 @@ _public_ int sd_event_source_get_priority(sd_event_source *s, int64_t *priority) return s->priority; } +#endif // 0 _public_ int sd_event_source_set_priority(sd_event_source *s, int64_t priority) { assert_return(s, -EINVAL); @@ -1428,6 +1444,8 @@ _public_ int sd_event_source_set_priority(sd_event_source *s, int64_t priority) return 0; } +/// UNNEEDED by elogind +#if 0 _public_ int sd_event_source_get_enabled(sd_event_source *s, int *m) { assert_return(s, -EINVAL); assert_return(m, -EINVAL); @@ -1436,6 +1454,7 @@ _public_ int sd_event_source_get_enabled(sd_event_source *s, int *m) { *m = s->enabled; return 0; } +#endif // 0 _public_ int sd_event_source_set_enabled(sd_event_source *s, int m) { int r; @@ -1457,10 +1476,7 @@ _public_ int sd_event_source_set_enabled(sd_event_source *s, int m) { switch (s->type) { case SOURCE_IO: - r = source_io_unregister(s); - if (r < 0) - return r; - + source_io_unregister(s); s->enabled = m; break; @@ -1645,6 +1661,8 @@ _public_ int sd_event_source_set_time(sd_event_source *s, uint64_t usec) { return 0; } +/// UNNEEDED by elogind +#if 0 _public_ int sd_event_source_get_time_accuracy(sd_event_source *s, uint64_t *usec) { assert_return(s, -EINVAL); assert_return(usec, -EINVAL); @@ -1699,6 +1717,7 @@ _public_ int sd_event_source_get_child_pid(sd_event_source *s, pid_t *pid) { *pid = s->child.pid; return 0; } +#endif // 0 _public_ int sd_event_source_set_prepare(sd_event_source *s, sd_event_handler_t callback) { int r; @@ -1732,6 +1751,8 @@ _public_ int sd_event_source_set_prepare(sd_event_source *s, sd_event_handler_t return 0; } +/// UNNEEDED by elogind +#if 0 _public_ void* sd_event_source_get_userdata(sd_event_source *s) { assert_return(s, NULL); @@ -1748,6 +1769,7 @@ _public_ void *sd_event_source_set_userdata(sd_event_source *s, void *userdata) return ret; } +#endif // 0 static usec_t sleep_between(sd_event *e, usec_t a, usec_t b) { usec_t c; @@ -2512,6 +2534,8 @@ _public_ int sd_event_run(sd_event *e, uint64_t timeout) { return r; } +/// UNNEEDED by elogind +#if 0 _public_ int sd_event_loop(sd_event *e) { int r; @@ -2541,6 +2565,7 @@ _public_ int sd_event_get_fd(sd_event *e) { return e->epoll_fd; } +#endif // 0 _public_ int sd_event_get_state(sd_event *e) { assert_return(e, -EINVAL); @@ -2572,14 +2597,19 @@ _public_ int sd_event_exit(sd_event *e, int code) { return 0; } +/// UNNEEDED by elogind +#if 0 _public_ int sd_event_now(sd_event *e, clockid_t clock, uint64_t *usec) { assert_return(e, -EINVAL); assert_return(usec, -EINVAL); assert_return(!event_pid_changed(e), -ECHILD); - /* If we haven't run yet, just get the actual time */ - if (!dual_timestamp_is_set(&e->timestamp)) - return -ENODATA; + if (!dual_timestamp_is_set(&e->timestamp)) { + /* Implicitly fall back to now() if we never ran + * before and thus have no cached time. */ + *usec = now(clock); + return 1; + } switch (clock) { @@ -2600,6 +2630,7 @@ _public_ int sd_event_now(sd_event *e, clockid_t clock, uint64_t *usec) { return 0; } +#endif // 0 _public_ int sd_event_default(sd_event **ret) { @@ -2692,9 +2723,12 @@ fail: return r; } +/// UNNEEDED by elogind +#if 0 _public_ int sd_event_get_watchdog(sd_event *e) { assert_return(e, -EINVAL); assert_return(!event_pid_changed(e), -ECHILD); return e->watchdog; } +#endif // 0