/* ISC license. */ /* MT-unsafe */ #include #include #include #include "selfpipe-internal.h" #include #ifdef SKALIBS_HASSIGNALFD #include #else #include #endif int selfpipe_init (void) { if (selfpipe_fd >= 0) return (errno = EBUSY, -1) ; sigemptyset(&selfpipe_caught) ; #ifdef SKALIBS_HASSIGNALFD selfpipe_fd = signalfd(-1, &selfpipe_caught, SFD_NONBLOCK | SFD_CLOEXEC) ; #else if (pipenbcoe(selfpipe) < 0) return -1 ; #endif return selfpipe_fd ; }