thr_sigsetmask(THREAD)
thr_sigsetmask --
change or examine the signal mask of a thread
Synopsis
cc [options] -Kthread file
#include <thread.h>
int thr_sigsetmask(int how, const sigset_t *set, sigset_t *oset);
Description
thr_sigsetmask changes or examines the
calling thread's signal mask
according to the way how and set are set.
If there are any pending unblocked signals
after the call to thr_sigsetmask,
at least one of those signals will be delivered
before the call to thr_sigsetmask returns.
In this implementation,
changing the signal mask of the thread
will also change the signal mask of the lightweight process (LWP)
running the thread.
Parameters
how-
SIG_BLOCK, SIG_UNBLOCK, or SIG_SETMASK
set-
pointer to a set of signals to be blocked or unblocked
oset-
pointer to the value of the
previous signal mask (set by thr_sigsetmask)
how parameter
how determines how set is interpreted.
Set how to one of the following values:
SIG_BLOCK-
Add the set of signals denoted by set
to the current signal mask
SIG_UNBLOCK-
Remove the set of signals denoted by set
from the current signal mask
SIG_SETMASK-
Replace the current signal mask
with the set of signals denoted by set
Note that 0 is not a valid value for how.
set parameter
set points to a set of signals to be blocked or unblocked
(according to the value of how)
in the current thread.
set is usually constructed with the routines described
on
sigsetops(S).
If set is NULL,
the value of how is not significant,
and the thread's signal mask will not be changed.
It is not possible to block those signals that cannot be ignored
(see
sigaction(S));
this restriction is silently imposed by the system.
oset parameter
If oset is not NULL,
thr_sigsetmask stores the value of the previous mask
in that location.
If set is NULL and oset is not NULL,
oset will point to the value of the thread's current signal mask.
Return values
thr_sigsetmask returns zero for success
and an error number for failure, as described below.
If thr_sigsetmask fails, the thread's signal mask is not changed.
Errors
If any of the following conditions occurs,
thr_sigsetmask returns the corresponding value:
EINVAL-
The value of how is not equal to one of the defined values.
Portability considerations
Threads should use thr_sigsetmask rather than
sigprocmask(S).
In some implementations,
sigprocmask can be trapped and behaves identically to thr_sigsetmask,
but for portability, thr_sigsetmask should be used.
Performance considerations
In this implementation,
an application running multiplexed threads with different signal masks
can observe a performance degradation.
Therefore, for optimal performance,
all multiplexing threads in a process
should use the same signal mask.
Applications needing threads
that will run frequently
with signal masks different from other threads in the process
should consider creating those threads as bound threads
for better performance.
Style considerations
The preferred coding style
is to mask all signals and use sigwait synchronously.
References
Intro(THREAD),
kill(S),
sigaction(S),
signal(M),
sigprocmask(S),
sigsend(S),
sigsetops(S),
sigwait(S),
thr_kill(THREAD)
© 2005 The SCO Group, Inc. All rights reserved.
SCO OpenServer Release 6.0.0 - 01 June 2005