sigset_t for new arches

Vineet Gupta Vineet.Gupta1@synopsys.com
Mon Nov 13 22:30:00 GMT 2017


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



More information about the Libc-alpha mailing list