Information about signals in POSIX systems is stored in two data structures: the signal set (a sigset_t), which represents some subset of all possible signals, and the signal action (represented by a struct sigaction), which is a handler function and an additional mask.
struct sigaction {
void (*sa_handler)(int);
sigset_t sa_mask;
int sa_flags;
};
The sa_handler member corresponds to the second argument of the signal() function. The sa_mask adds to the existing signal mask for the process.
The sa_mask set of signals are signals to be blocked during the execution of sa_handler(). The set of signals that are blocked during the execution of the handler function are the union of the process signal mask and sa_mask.
The Interix Software Development Kit (SDK) provides the SA_RESTART flag, which is found in Berkeley Software Distribution (BSD).