uswitch(2) — System Calls
NAME
uswitch - Get or set compatibility environment specific behavior for a calling process through the uswitch value.
SYNOPSIS
#include <sys/uswitch.h>
long uswitch (long cmd,
long mask);
PARAMETERS
cmdSpecifies the requested actions. The valid cmd values are:
USC_GETReturns the current uswitch value for the calling process. If mask is non-zero, it returns the status of specific uswitch bit-mask(s).
USC_SETChanges the current uswitch value for the calling process as specified by the mask bit-mask(s).
maskThe following bit-mask is valid when specified with either of the values for the cmd parameter:
USW_NULLP
Specifies System V NULL pointer behavior.
DESCRIPTION
The uswitch system call is used to get or change the compatibility environment specific behavior in DEC OSF/1. Any changes affect the calling process and its children.
When the USW_NULLP bit of uswitch is set to 1, the System V method of treating NULL pointers is applied. In this method, references to a NULL pointer always returns zero (0). When this bit-mask is reset to zero (0), subsequent references to a NULL pointer generate a segmentation violation signal (SIGSEGV).
Any write(2) references to NULL pointers generate a segmentation violation signal (SIGSEGV) regardless of the uswitch value.
EXAMPLES
long uswitch_val;
...
uswitch_val = uswitch(USC_GET,0); /∗ Gets current value∗/
uswitch(USC_SET, uswitch_val | USW_NULLP); /∗ Sets USW_NULLP bit ∗/
NOTE
Usage of this system call may make the application non-portable.
RETURN VALUES
Upon successful completion, either the current or new uswitch value for mask is returned. Otherwise, a value of -1 is returned and errno is set to indicate the error.
ERRORS
If the uswitch system call fails, the uswitch value remains unchanged and errno is set to the following:
[EINVAL]The mask is greater than USW_MAX or less than USW_MIN.