Guardian Procedure Calls Reference Manual

If NULL, causes the signal mask in the jump buffer indicated by env to be cleared. A subsequent
call to the SIGLONGJMP_ procedure restores the context contained in the jump buffer, including
the clear signal mask that unblocks all signals.
Returned Value
INT(32)
Outcome of the call:
Successful outcome.0D
An error occurred. The reason for the error is given in the errno variable:-1D
The jump buffer has not been initialized.FE_EINVAL
Use the ERRNO_GET_ procedure to obtain the value of errno in a Guardian process.
Considerations
SIGJMP_MASKSET_ is an extension to the POSIX.1 standard.
SIGJMP_MASKSET_ is typically called from a signal handler before a SIGLONGJMP_ procedure
is executed. Using SIGJMP_MASKSET_ can avoid the overhead of setting the signal mask in
the jump buffer in an application with many calls to SIGSETJMP_ and fewer calls to
SIGLONGJMP_.
The buffer pointer env is assumed to be valid and initialized by an earlier SETJMP_ or
SIGSETJMP_ call. Otherwise, SIGJMP_MASKSET_ returns -1D and errno is set to FE_EINVAL.
This procedure overwrites any signal mask that is already in the jump buffer.
Any invalid address passed to this procedure will cause the system to deliver a nondeferrable
system-generated signal to the process.
Only the SIGLONGJMP_ procedure, not the LONGJMP_ procedure, can be used with a jump
buffer modified by SIGJMP_MASKSET_.
Examples
error := SIG?JMP_MASKSET_ ( env, mask );
or
INT .EXT NULL := 0D; ...
error := SIGJMP_MASKSET_ ( env, NULL);
Related Programming Manual
For programming information about the SIGJMP_MASKSET_ procedure, see the Guardian
Programmer's Guide.
SIGJMP_MASKSET_ Procedure 1373