1 /* ISC license. */
2 
3 /* MT-unsafe */
4 
5 #include <skalibs/sysdeps.h>
6 #include <skalibs/allreadwrite.h>
7 #include "selfpipe-internal.h"
8 #include <skalibs/selfpipe.h>
9 
10 #ifdef SKALIBS_HASSIGNALFD
11 
12 #include <sys/signalfd.h>
13 
selfpipe_read(void)14 int selfpipe_read (void)
15 {
16   struct signalfd_siginfo buf ;
17   ssize_t r = sanitize_read(fd_read(selfpipe_fd, (char *)&buf, sizeof(struct signalfd_siginfo))) ;
18   return (r <= 0) ? r : buf.ssi_signo ;
19 }
20 
21 #else
22 
selfpipe_read(void)23 int selfpipe_read (void)
24 {
25   char c ;
26   ssize_t r = sanitize_read((fd_read(selfpipe_fd, &c, 1))) ;
27   return (r <= 0) ? r : c ;
28 }
29 
30 #endif
31 
32