X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flibsystemd%2Fsd-event%2Ftest-event.c;h=721700be7b0c2d45078efef2fc097123c9b655a5;hb=796f9ac2ba3731fec49fd684b1adc02cfbe6f11b;hp=3342ec696841ed1b801d001b3d0be9e9159b26b5;hpb=3d94f76c99da13e5603831d0b278f8c8c21bcb02;p=elogind.git diff --git a/src/libsystemd/sd-event/test-event.c b/src/libsystemd/sd-event/test-event.c index 3342ec696..721700be7 100644 --- a/src/libsystemd/sd-event/test-event.c +++ b/src/libsystemd/sd-event/test-event.c @@ -22,6 +22,7 @@ #include "sd-event.h" #include "log.h" #include "util.h" +#include "macro.h" static int prepare_handler(sd_event_source *s, void *userdata) { log_info("preparing %c", PTR_TO_INT(userdata)); @@ -62,12 +63,12 @@ static int io_handler(sd_event_source *s, int fd, uint32_t revents, void *userda static int child_handler(sd_event_source *s, const siginfo_t *si, void *userdata) { - assert(s); - assert(si); + assert_se(s); + assert_se(si); log_info("got child on %c", PTR_TO_INT(userdata)); - assert(userdata == INT_TO_PTR('f')); + assert_se(userdata == INT_TO_PTR('f')); assert_se(sd_event_exit(sd_event_source_get_event(s), 0) >= 0); sd_event_source_unref(s); @@ -80,12 +81,12 @@ static int signal_handler(sd_event_source *s, const struct signalfd_siginfo *si, sigset_t ss; pid_t pid; - assert(s); - assert(si); + assert_se(s); + assert_se(si); log_info("got signal on %c", PTR_TO_INT(userdata)); - assert(userdata == INT_TO_PTR('e')); + assert_se(userdata == INT_TO_PTR('e')); assert_se(sigemptyset(&ss) >= 0); assert_se(sigaddset(&ss, SIGCHLD) >= 0); @@ -109,11 +110,11 @@ static int defer_handler(sd_event_source *s, void *userdata) { sd_event_source *p = NULL; sigset_t ss; - assert(s); + assert_se(s); log_info("got defer on %c", PTR_TO_INT(userdata)); - assert(userdata == INT_TO_PTR('d')); + assert_se(userdata == INT_TO_PTR('d')); assert_se(sigemptyset(&ss) >= 0); assert_se(sigaddset(&ss, SIGUSR1) >= 0); @@ -140,7 +141,7 @@ static int time_handler(sd_event_source *s, uint64_t usec, void *userdata) { assert_se(sd_event_add_defer(sd_event_source_get_event(s), &p, defer_handler, INT_TO_PTR('d')) >= 0); assert_se(sd_event_source_set_enabled(p, SD_EVENT_ONESHOT) >= 0); } else { - assert(!got_c); + assert_se(!got_c); got_c = true; } } else @@ -206,6 +207,10 @@ int main(int argc, char *argv[]) { assert_se(sd_event_source_set_enabled(z, SD_EVENT_ONESHOT) >= 0); assert_se(sd_event_source_set_prepare(z, prepare_handler) >= 0); + /* Test for floating event sources */ + assert_se(sigprocmask_many(SIG_BLOCK, SIGRTMIN+1, -1) == 0); + assert_se(sd_event_add_signal(e, NULL, SIGRTMIN+1, NULL, NULL) >= 0); + assert_se(write(a[1], &ch, 1) >= 0); assert_se(write(b[1], &ch, 1) >= 0);