This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
sigset_t for new arches
- From: Vineet Gupta <Vineet dot Gupta1 at synopsys dot com>
- To: <libc-alpha at sourceware dot org>
- Date: Mon, 13 Nov 2017 14:29:54 -0800
- Subject: sigset_t for new arches
- Authentication-results: sourceware.org; auth=none
Hi,
This came to light when initial testing ARC port to glibc.
ARC glibc sigaction wrapper was failing as Linux kernel expects sa_mask (sigset_t)
to be 2 words (for the asm-generic syscall ABI mandated for newer arches) while
glibc defines it to be 32 words.
The quick fix is to lie to kernel about it - and following works. This is also
approach taken by few other arches.
return INLINE_SYSCALL(rt_sigaction, 4,
- sig, act, oact, sizeof(act->sa_mask));
+ sig, act, oact, _NSIG / 8);
However, IMHO, it would be nicer to just define sigset_t to be 2 words wide for
the relevant arch. If nothing else it would conserver some memory.
My proposal is to define _SIGSET_NWORDS per arch in some header, with a fallback
header defaulting to what the current value is. Does this make sense ? If yes,
should this be in a new header or put in existing hdr etc.
Thx,
-Vineet