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