return 0;
}
-#if 0 /// UNNEEDED by elogind
static clockid_t event_source_type_to_clock(EventSourceType t) {
switch (t) {
return (clockid_t) -1;
}
}
-#endif // 0
static EventSourceType clock_to_event_source_type(clockid_t clock) {
/* If all the mask is all-zero we can get rid of the structure */
hashmap_remove(e->signal_data, &d->priority);
- assert(!d->current);
safe_close(d->fd);
free(d);
return;
return 0;
}
-#if 0 /// UNNEEDED by elogind
_public_ int sd_event_add_child(
sd_event *e,
sd_event_source **ret,
return 0;
}
-#endif // 0
_public_ int sd_event_add_post(
sd_event *e,
return 0;
}
-#if 0 /// UNNEEDED by elogind
_public_ sd_event_source* sd_event_source_ref(sd_event_source *s) {
if (!s)
return s;
}
-#endif // 0
_public_ sd_event_source* sd_event_source_unref(sd_event_source *s) {
return free_and_strdup(&s->description, description);
}
-#if 0 /// UNNEEDED by elogind
_public_ int sd_event_source_get_description(sd_event_source *s, const char **description) {
assert_return(s, -EINVAL);
assert_return(description, -EINVAL);
*description = s->description;
return 0;
}
-#endif // 0
_public_ sd_event *sd_event_source_get_event(sd_event_source *s) {
assert_return(s, NULL);
return s->event;
}
-#if 0 /// UNNEEDED by elogind
_public_ int sd_event_source_get_pending(sd_event_source *s) {
assert_return(s, -EINVAL);
assert_return(s->type != SOURCE_EXIT, -EDOM);
return s->io.fd;
}
-#endif // 0
_public_ int sd_event_source_set_io_fd(sd_event_source *s, int fd) {
int r;
return 0;
}
-#if 0 /// UNNEEDED by elogind
_public_ int sd_event_source_get_io_events(sd_event_source *s, uint32_t* events) {
assert_return(s, -EINVAL);
assert_return(events, -EINVAL);
*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;
return 0;
}
-#if 0 /// UNNEEDED by elogind
_public_ int sd_event_source_get_io_revents(sd_event_source *s, uint32_t* revents) {
assert_return(s, -EINVAL);
assert_return(revents, -EINVAL);
*priority = s->priority;
return 0;
}
-#endif // 0
_public_ int sd_event_source_set_priority(sd_event_source *s, int64_t priority) {
int r;
return 0;
}
-#if 0 /// UNNEEDED by elogind
_public_ int sd_event_source_get_enabled(sd_event_source *s, int *m) {
assert_return(s, -EINVAL);
assert_return(m, -EINVAL);
*m = s->enabled;
return 0;
}
-#endif // 0
_public_ int sd_event_source_set_enabled(sd_event_source *s, int m) {
int r;
return 0;
}
-#if 0 /// UNNEEDED by elogind
_public_ int sd_event_source_get_time_accuracy(sd_event_source *s, uint64_t *usec) {
assert_return(s, -EINVAL);
assert_return(usec, -EINVAL);
*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;
return 0;
}
-#if 0 /// UNNEEDED by elogind
_public_ void* sd_event_source_get_userdata(sd_event_source *s) {
assert_return(s, NULL);
return ret;
}
-#endif // 0
static usec_t sleep_between(sd_event *e, usec_t a, usec_t b) {
usec_t c;
}
static int source_dispatch(sd_event_source *s) {
+ EventSourceType saved_type;
int r = 0;
assert(s);
assert(s->pending || s->type == SOURCE_EXIT);
+ /* Save the event source type, here, so that we still know it after the event callback which might invalidate
+ * the event. */
+ saved_type = s->type;
+
if (s->type != SOURCE_DEFER && s->type != SOURCE_EXIT) {
r = source_set_pending(s, false);
if (r < 0)
if (r < 0)
log_debug_errno(r, "Event source %s (type %s) returned error, disabling: %m",
- strna(s->description), event_source_type_to_string(s->type));
+ strna(s->description), event_source_type_to_string(saved_type));
if (s->n_ref == 0)
source_free(s);
return r;
}
-#if 0 /// UNNEEDED by elogind
_public_ int sd_event_loop(sd_event *e) {
int r;
return e->epoll_fd;
}
-#endif // 0
_public_ int sd_event_get_state(sd_event *e) {
assert_return(e, -EINVAL);
return e->state;
}
-#if 0 /// UNNEEDED by elogind
_public_ int sd_event_get_exit_code(sd_event *e, int *code) {
assert_return(e, -EINVAL);
assert_return(code, -EINVAL);
*code = e->exit_code;
return 0;
}
-#endif // 0
_public_ int sd_event_exit(sd_event *e, int code) {
assert_return(e, -EINVAL);
return 0;
}
-#if 0 /// UNNEEDED by elogind
_public_ int sd_event_now(sd_event *e, clockid_t clock, uint64_t *usec) {
assert_return(e, -EINVAL);
assert_return(usec, -EINVAL);
*usec = triple_timestamp_by_clock(&e->timestamp, clock);
return 0;
}
-#endif // 0
_public_ int sd_event_default(sd_event **ret) {
return 1;
}
-#if 0 /// UNNEEDED by elogind
_public_ int sd_event_get_tid(sd_event *e, pid_t *tid) {
assert_return(e, -EINVAL);
assert_return(tid, -EINVAL);
return -ENXIO;
}
-#endif // 0
_public_ int sd_event_set_watchdog(sd_event *e, int b) {
int r;
return r;
}
-#if 0 /// UNNEEDED by elogind
_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
_public_ int sd_event_get_iteration(sd_event *e, uint64_t *ret) {
assert_return(e, -EINVAL);