[klibc] [PATCH] fix non-RT sigsuspend()
H. Peter Anvin
hpa at zytor.com
Mon May 14 15:36:18 PDT 2012
On 05/05/2012 02:32 PM, Thorsten Glaser wrote:
> While the userspace function signature is
> int sigsuspend(const sigset_t *maskptr)
> there are several variants of how this is mapped into kernel
> functions: one for rt_sigsuspend and several, mutually incompatible,
> legacy ones, split by architectures. Before this commit, klibc did
> not care about that and passed maskptr as first and only argument
> to the syscall, leading to junk in other argument slots. There are
> several non-RT variants:
> 1) int sigsuspend(sigset_t mask)
> 2) long sigsuspend(sigset_t mask)
> 3) int sigsuspend(int ignored1,
> unsigned long ignored2, sigset_t mask)
> 4) int sigsuspend(int ignored1, int ignored2, sigset_t mask)
> 5) long sigsuspend(int ignored1, int ignored2, sigset_t mask)
> Note how none of these accepts a pointer, they all want the value.
> 6) (none at all, only RT exists)
>
OK, so the real question becomes: can we just switch all the
architectures to rt instead?
-hpa
More information about the klibc
mailing list