1 /*
2 * signalfd() for uClibc
3 *
4 * Copyright (C) 2008 Bernhard Reutner-Fischer <uclibc@uclibc.org>
5 *
6 * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
7 */
8
9 #include <sys/syscall.h>
10 #include <signal.h>
11 #include <sys/signalfd.h>
12
13 #if defined __NR_signalfd4
14 #define __NR___syscall_signalfd4 __NR_signalfd4
_syscall4(int,__syscall_signalfd4,int,fd,const sigset_t *,mask,size_t,sizemask,int,flags)15 static __inline__ _syscall4(int, __syscall_signalfd4, int, fd,
16 const sigset_t *, mask, size_t, sizemask, int, flags)
17 #elif defined __NR_signalfd
18 #define __NR___syscall_signalfd __NR_signalfd
19 static __inline__ _syscall3(int, __syscall_signalfd, int, fd,
20 const sigset_t *, mask, size_t, sizemask)
21 #endif
22
23 #if defined __NR_signalfd4 || defined __NR_signalfd
24 int signalfd (int fd, const sigset_t *mask, int flags)
25 {
26 #if defined __NR___syscall_signalfd4
27 return __syscall_signalfd4(fd, mask, __SYSCALL_SIGSET_T_SIZE, flags);
28 #elif defined __NR___syscall_signalfd
29 if (flags != 0) {
30 __set_errno(EINVAL);
31 return -1;
32 }
33 return __syscall_signalfd(fd, mask, __SYSCALL_SIGSET_T_SIZE);
34 #endif
35 }
36 #endif
37