bus: add public libsystemd-event

This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2013-11-06 02:47:39 -05:00
parent d9f644e2cd
commit f7262a9f28
3 changed files with 133 additions and 44 deletions

View File

@ -63,6 +63,10 @@ LIBSYSTEMD_BUS_CURRENT=0
LIBSYSTEMD_BUS_REVISION=0
LIBSYSTEMD_BUS_AGE=0
LIBSYSTEMD_EVENT_CURRENT=0
LIBSYSTEMD_EVENT_REVISION=0
LIBSYSTEMD_EVENT_AGE=0
# Dirs of external packages
dbuspolicydir=@dbuspolicydir@
dbussessionservicedir=@dbussessionservicedir@
@ -1948,12 +1952,28 @@ EXTRA_DIST += \
src/libsystemd-daemon/libsystemd-daemon.sym
# ------------------------------------------------------------------------------
libsystemd_event_la_SOURCES = \
src/libsystemd-bus/sd-event.c \
src/systemd/sd-event.h \
src/libsystemd-bus/event-util.h
libsystemd_event_la_LDFLAGS = \
$(AM_LDFLAGS) \
-version-info $(LIBSYSTEMD_EVENT_CURRENT):$(LIBSYSTEMD_EVENT_REVISION):$(LIBSYSTEMD_EVENT_AGE) \
-Wl,--version-script=$(top_srcdir)/src/libsystemd-bus/libsystemd-event.sym
lib_LTLIBRARIES += \
libsystemd-event.la
libsystemd_event_la_LIBADD = \
libsystemd-id128-internal.la \
libsystemd-shared.la
libsystemd_bus_la_SOURCES = \
src/systemd/sd-bus.h \
src/systemd/sd-bus-protocol.h \
src/systemd/sd-bus-vtable.h \
src/systemd/sd-memfd.h \
src/systemd/sd-event.h \
src/libsystemd-bus/sd-bus.c \
src/libsystemd-bus/bus-control.c \
src/libsystemd-bus/bus-control.h \
@ -1984,15 +2004,14 @@ libsystemd_bus_la_SOURCES = \
src/libsystemd-bus/bus-convenience.c \
src/libsystemd-bus/kdbus.h \
src/libsystemd-bus/sd-memfd.c \
src/libsystemd-bus/sd-event.c \
src/libsystemd-bus/bus-util.c \
src/libsystemd-bus/bus-util.h \
src/libsystemd-bus/event-util.h
src/libsystemd-bus/bus-util.h
libsystemd_bus_la_LIBADD = \
libsystemd-id128-internal.la \
libsystemd-shared.la \
libsystemd-daemon.la
libsystemd-daemon.la \
libsystemd-event.la
libsystemd_bus_la_CFLAGS = \
$(AM_CFLAGS) \
@ -2007,7 +2026,8 @@ lib_LTLIBRARIES += \
libsystemd-bus.la
libsystemd_bus_internal_la_SOURCES = \
$(libsystemd_bus_la_SOURCES)
$(libsystemd_bus_la_SOURCES) \
$(libsystemd_event_la_SOURCES)
libsystemd_bus_internal_la_CFLAGS = \
$(libsystemd_bus_la_CFLAGS)
@ -3247,7 +3267,7 @@ systemd_socket_proxyd_SOURCES = \
systemd_socket_proxyd_LDADD = \
libsystemd-logs.la \
libsystemd-bus-internal.la \
libsystemd-bus.la \
libsystemd-journal-internal.la \
libsystemd-id128-internal.la \
libsystemd-shared.la \

View File

@ -0,0 +1,57 @@
/***
This file is part of systemd.
systemd is free software; you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
***/
LIBSYSTEMD_EVENT_209 {
global:
sd_event_new;
sd_event_ref;
sd_event_unref;
sd_event_add_io;
sd_event_add_monotonic;
sd_event_add_realtime;
sd_event_add_signal;
sd_event_add_child;
sd_event_add_defer;
sd_event_add_quit;
sd_event_run;
sd_event_loop;
sd_event_get_state;
sd_event_get_quit;
sd_event_request_quit;
sd_event_get_now_realtime;
sd_event_get_now_monotonic;
sd_event_get;
sd_event_source_ref;
sd_event_source_unref;
sd_event_source_set_prepare;
sd_event_source_get_pending;
sd_event_source_get_priority;
sd_event_source_set_priority;
sd_event_source_get_enabled;
sd_event_source_set_enabled;
sd_event_source_get_userdata;
sd_event_source_get_io_fd;
sd_event_source_get_io_events;
sd_event_source_set_io_events;
sd_event_source_get_io_revents;
sd_event_source_get_time;
sd_event_source_set_time;
sd_event_source_set_time_accuracy;
sd_event_source_get_time_accuracy;
sd_event_source_get_signal;
sd_event_source_get_child_pid;
local:
*;
};

View File

@ -330,7 +330,7 @@ static void event_free(sd_event *e) {
free(e);
}
int sd_event_new(sd_event** ret) {
_public_ int sd_event_new(sd_event** ret) {
sd_event *e;
int r;
@ -367,7 +367,7 @@ fail:
return r;
}
sd_event* sd_event_ref(sd_event *e) {
_public_ sd_event* sd_event_ref(sd_event *e) {
assert_return(e, NULL);
assert(e->n_ref >= 1);
@ -376,7 +376,7 @@ sd_event* sd_event_ref(sd_event *e) {
return e;
}
sd_event* sd_event_unref(sd_event *e) {
_public_ sd_event* sd_event_unref(sd_event *e) {
assert_return(e, NULL);
assert(e->n_ref >= 1);
@ -556,7 +556,7 @@ static sd_event_source *source_new(sd_event *e, EventSourceType type) {
return s;
}
int sd_event_add_io(
_public_ int sd_event_add_io(
sd_event *e,
int fd,
uint32_t events,
@ -712,11 +712,23 @@ fail:
return r;
}
int sd_event_add_monotonic(sd_event *e, uint64_t usec, uint64_t accuracy, sd_time_handler_t callback, void *userdata, sd_event_source **ret) {
_public_ int sd_event_add_monotonic(sd_event *e,
uint64_t usec,
uint64_t accuracy,
sd_time_handler_t callback,
void *userdata,
sd_event_source **ret) {
return event_add_time_internal(e, SOURCE_MONOTONIC, &e->monotonic_fd, CLOCK_MONOTONIC, &e->monotonic_earliest, &e->monotonic_latest, usec, accuracy, callback, userdata, ret);
}
int sd_event_add_realtime(sd_event *e, uint64_t usec, uint64_t accuracy, sd_time_handler_t callback, void *userdata, sd_event_source **ret) {
_public_ int sd_event_add_realtime(sd_event *e,
uint64_t usec,
uint64_t accuracy,
sd_time_handler_t callback,
void *userdata,
sd_event_source **ret) {
return event_add_time_internal(e, SOURCE_REALTIME, &e->realtime_fd, CLOCK_REALTIME, &e->realtime_earliest, &e->monotonic_latest, usec, accuracy, callback, userdata, ret);
}
@ -752,7 +764,7 @@ static int event_update_signal_fd(sd_event *e) {
return 0;
}
int sd_event_add_signal(
_public_ int sd_event_add_signal(
sd_event *e,
int sig,
sd_signal_handler_t callback,
@ -801,7 +813,7 @@ int sd_event_add_signal(
return 0;
}
int sd_event_add_child(
_public_ int sd_event_add_child(
sd_event *e,
pid_t pid,
int options,
@ -862,7 +874,7 @@ int sd_event_add_child(
return 0;
}
int sd_event_add_defer(
_public_ int sd_event_add_defer(
sd_event *e,
sd_defer_handler_t callback,
void *userdata,
@ -895,7 +907,7 @@ int sd_event_add_defer(
return 0;
}
int sd_event_add_quit(
_public_ int sd_event_add_quit(
sd_event *e,
sd_quit_handler_t callback,
void *userdata,
@ -935,7 +947,7 @@ int sd_event_add_quit(
return 0;
}
sd_event_source* sd_event_source_ref(sd_event_source *s) {
_public_ sd_event_source* sd_event_source_ref(sd_event_source *s) {
assert_return(s, NULL);
assert(s->n_ref >= 1);
@ -944,7 +956,7 @@ sd_event_source* sd_event_source_ref(sd_event_source *s) {
return s;
}
sd_event_source* sd_event_source_unref(sd_event_source *s) {
_public_ sd_event_source* sd_event_source_unref(sd_event_source *s) {
assert_return(s, NULL);
assert(s->n_ref >= 1);
@ -956,13 +968,13 @@ sd_event_source* sd_event_source_unref(sd_event_source *s) {
return NULL;
}
sd_event *sd_event_get(sd_event_source *s) {
_public_ sd_event *sd_event_get(sd_event_source *s) {
assert_return(s, NULL);
return s->event;
}
int sd_event_source_get_pending(sd_event_source *s) {
_public_ int sd_event_source_get_pending(sd_event_source *s) {
assert_return(s, -EINVAL);
assert_return(s->type != SOURCE_QUIT, -EDOM);
assert_return(s->event->state != SD_EVENT_FINISHED, -ESTALE);
@ -971,7 +983,7 @@ int sd_event_source_get_pending(sd_event_source *s) {
return s->pending;
}
int sd_event_source_get_io_fd(sd_event_source *s) {
_public_ int sd_event_source_get_io_fd(sd_event_source *s) {
assert_return(s, -EINVAL);
assert_return(s->type == SOURCE_IO, -EDOM);
assert_return(!event_pid_changed(s->event), -ECHILD);
@ -979,7 +991,7 @@ int sd_event_source_get_io_fd(sd_event_source *s) {
return s->io.fd;
}
int sd_event_source_get_io_events(sd_event_source *s, uint32_t* events) {
_public_ int sd_event_source_get_io_events(sd_event_source *s, uint32_t* events) {
assert_return(s, -EINVAL);
assert_return(events, -EINVAL);
assert_return(s->type == SOURCE_IO, -EDOM);
@ -989,7 +1001,7 @@ int sd_event_source_get_io_events(sd_event_source *s, uint32_t* events) {
return 0;
}
int sd_event_source_set_io_events(sd_event_source *s, uint32_t events) {
_public_ int sd_event_source_set_io_events(sd_event_source *s, uint32_t events) {
int r;
assert_return(s, -EINVAL);
@ -1012,7 +1024,7 @@ int sd_event_source_set_io_events(sd_event_source *s, uint32_t events) {
return 0;
}
int sd_event_source_get_io_revents(sd_event_source *s, uint32_t* revents) {
_public_ int sd_event_source_get_io_revents(sd_event_source *s, uint32_t* revents) {
assert_return(s, -EINVAL);
assert_return(revents, -EINVAL);
assert_return(s->type == SOURCE_IO, -EDOM);
@ -1023,7 +1035,7 @@ int sd_event_source_get_io_revents(sd_event_source *s, uint32_t* revents) {
return 0;
}
int sd_event_source_get_signal(sd_event_source *s) {
_public_ int sd_event_source_get_signal(sd_event_source *s) {
assert_return(s, -EINVAL);
assert_return(s->type == SOURCE_SIGNAL, -EDOM);
assert_return(!event_pid_changed(s->event), -ECHILD);
@ -1031,14 +1043,14 @@ int sd_event_source_get_signal(sd_event_source *s) {
return s->signal.sig;
}
int sd_event_source_get_priority(sd_event_source *s, int *priority) {
_public_ int sd_event_source_get_priority(sd_event_source *s, int *priority) {
assert_return(s, -EINVAL);
assert_return(!event_pid_changed(s->event), -ECHILD);
return s->priority;
}
int sd_event_source_set_priority(sd_event_source *s, int priority) {
_public_ int sd_event_source_set_priority(sd_event_source *s, int priority) {
assert_return(s, -EINVAL);
assert_return(s->event->state != SD_EVENT_FINISHED, -ESTALE);
assert_return(!event_pid_changed(s->event), -ECHILD);
@ -1060,7 +1072,7 @@ int sd_event_source_set_priority(sd_event_source *s, int priority) {
return 0;
}
int sd_event_source_get_enabled(sd_event_source *s, int *m) {
_public_ int sd_event_source_get_enabled(sd_event_source *s, int *m) {
assert_return(s, -EINVAL);
assert_return(m, -EINVAL);
assert_return(!event_pid_changed(s->event), -ECHILD);
@ -1069,7 +1081,7 @@ int sd_event_source_get_enabled(sd_event_source *s, int *m) {
return 0;
}
int sd_event_source_set_enabled(sd_event_source *s, int m) {
_public_ int sd_event_source_set_enabled(sd_event_source *s, int m) {
int r;
assert_return(s, -EINVAL);
@ -1201,7 +1213,7 @@ int sd_event_source_set_enabled(sd_event_source *s, int m) {
return 0;
}
int sd_event_source_get_time(sd_event_source *s, uint64_t *usec) {
_public_ int sd_event_source_get_time(sd_event_source *s, uint64_t *usec) {
assert_return(s, -EINVAL);
assert_return(usec, -EINVAL);
assert_return(s->type == SOURCE_REALTIME || s->type == SOURCE_MONOTONIC, -EDOM);
@ -1211,7 +1223,7 @@ int sd_event_source_get_time(sd_event_source *s, uint64_t *usec) {
return 0;
}
int sd_event_source_set_time(sd_event_source *s, uint64_t usec) {
_public_ int sd_event_source_set_time(sd_event_source *s, uint64_t usec) {
assert_return(s, -EINVAL);
assert_return(usec != (uint64_t) -1, -EINVAL);
assert_return(s->type == SOURCE_REALTIME || s->type == SOURCE_MONOTONIC, -EDOM);
@ -1234,7 +1246,7 @@ int sd_event_source_set_time(sd_event_source *s, uint64_t usec) {
return 0;
}
int sd_event_source_get_time_accuracy(sd_event_source *s, uint64_t *usec) {
_public_ int sd_event_source_get_time_accuracy(sd_event_source *s, uint64_t *usec) {
assert_return(s, -EINVAL);
assert_return(usec, -EINVAL);
assert_return(s->type == SOURCE_REALTIME || s->type == SOURCE_MONOTONIC, -EDOM);
@ -1244,7 +1256,7 @@ int sd_event_source_get_time_accuracy(sd_event_source *s, uint64_t *usec) {
return 0;
}
int sd_event_source_set_time_accuracy(sd_event_source *s, uint64_t usec) {
_public_ int sd_event_source_set_time_accuracy(sd_event_source *s, uint64_t usec) {
assert_return(s, -EINVAL);
assert_return(usec != (uint64_t) -1, -EINVAL);
assert_return(s->type == SOURCE_REALTIME || s->type == SOURCE_MONOTONIC, -EDOM);
@ -1267,7 +1279,7 @@ int sd_event_source_set_time_accuracy(sd_event_source *s, uint64_t usec) {
return 0;
}
int sd_event_source_get_child_pid(sd_event_source *s, pid_t *pid) {
_public_ int sd_event_source_get_child_pid(sd_event_source *s, pid_t *pid) {
assert_return(s, -EINVAL);
assert_return(pid, -EINVAL);
assert_return(s->type == SOURCE_CHILD, -EDOM);
@ -1277,7 +1289,7 @@ int sd_event_source_get_child_pid(sd_event_source *s, pid_t *pid) {
return 0;
}
int sd_event_source_set_prepare(sd_event_source *s, sd_prepare_handler_t callback) {
_public_ int sd_event_source_set_prepare(sd_event_source *s, sd_prepare_handler_t callback) {
int r;
assert_return(s, -EINVAL);
@ -1309,7 +1321,7 @@ int sd_event_source_set_prepare(sd_event_source *s, sd_prepare_handler_t callbac
return 0;
}
void* sd_event_source_get_userdata(sd_event_source *s) {
_public_ void* sd_event_source_get_userdata(sd_event_source *s) {
assert_return(s, NULL);
return s->userdata;
@ -1702,7 +1714,7 @@ static sd_event_source* event_next_pending(sd_event *e) {
return p;
}
int sd_event_run(sd_event *e, uint64_t timeout) {
_public_ int sd_event_run(sd_event *e, uint64_t timeout) {
struct epoll_event ev_queue[EPOLL_QUEUE_MAX];
sd_event_source *p;
int r, i, m;
@ -1789,7 +1801,7 @@ finish:
return r;
}
int sd_event_loop(sd_event *e) {
_public_ int sd_event_loop(sd_event *e) {
int r;
assert_return(e, -EINVAL);
@ -1811,21 +1823,21 @@ finish:
return r;
}
int sd_event_get_state(sd_event *e) {
_public_ int sd_event_get_state(sd_event *e) {
assert_return(e, -EINVAL);
assert_return(!event_pid_changed(e), -ECHILD);
return e->state;
}
int sd_event_get_quit(sd_event *e) {
_public_ int sd_event_get_quit(sd_event *e) {
assert_return(e, -EINVAL);
assert_return(!event_pid_changed(e), -ECHILD);
return e->quit_requested;
}
int sd_event_request_quit(sd_event *e) {
_public_ int sd_event_request_quit(sd_event *e) {
assert_return(e, -EINVAL);
assert_return(e->state != SD_EVENT_FINISHED, -ESTALE);
assert_return(!event_pid_changed(e), -ECHILD);
@ -1834,7 +1846,7 @@ int sd_event_request_quit(sd_event *e) {
return 0;
}
int sd_event_get_now_realtime(sd_event *e, uint64_t *usec) {
_public_ int sd_event_get_now_realtime(sd_event *e, uint64_t *usec) {
assert_return(e, -EINVAL);
assert_return(usec, -EINVAL);
assert_return(dual_timestamp_is_set(&e->timestamp), -ENODATA);
@ -1844,7 +1856,7 @@ int sd_event_get_now_realtime(sd_event *e, uint64_t *usec) {
return 0;
}
int sd_event_get_now_monotonic(sd_event *e, uint64_t *usec) {
_public_ int sd_event_get_now_monotonic(sd_event *e, uint64_t *usec) {
assert_return(e, -EINVAL);
assert_return(usec, -EINVAL);
assert_return(dual_timestamp_is_set(&e->timestamp), -ENODATA);