remove __SYSCALL_SSLEN arch macro in favor of using public _NSIG

the issue at hand is that many syscalls require as an argument the
kernel-ABI size of sigset_t, intended to allow the kernel to switch to
a larger sigset_t in the future. previously, each arch was defining
this size in syscall_arch.h, which was redundant with the definition
of _NSIG in bits/signal.h. as it's used in some not-quite-portable
application code as well, _NSIG is much more likely to be recognized
and understood immediately by someone reading the code, and it's also
shorter and less cluttered.

note that _NSIG is actually 65/129, not 64/128, but the division takes
care of throwing away the off-by-one part.
This commit is contained in:
Rich Felker
2013-03-26 23:07:31 -04:00
parent 00f1521fdd
commit ccc7b4c3a1
21 changed files with 27 additions and 35 deletions
+2 -1
View File
@@ -1,10 +1,11 @@
#include <sys/select.h>
#include <signal.h>
#include "syscall.h"
#include "libc.h"
int pselect(int n, fd_set *restrict rfds, fd_set *restrict wfds, fd_set *restrict efds, const struct timespec *restrict ts, const sigset_t *restrict mask)
{
long data[2] = { (long)mask, __SYSCALL_SSLEN };
long data[2] = { (long)mask, _NSIG/8 };
struct timespec ts_tmp;
if (ts) ts_tmp = *ts;
return syscall_cp(SYS_pselect6, n, rfds, wfds, efds, ts ? &ts_tmp : 0, data);