Content-type: text/html
uswitch - Get or set compatibility environment specific behavior for a calling process through the uswitch value.
#include <sys/uswitch.h>
long uswitch(
long cmd,
long mask
);
Specifies the requested actions. The valid
cmd
values are:
Returns the current
uswitch
value for the
calling process. If
mask
is non-zero, it returns the
status of specific
uswitch
bit-mask(s).
Changes the current
uswitch
value for the
calling process as specified by the
mask
bit-mask(s).
The following bit-masks are valid when specified with either
of the values for the
cmd
parameter:
Specifies System V NULL pointer behavior.
Specifies process requests enhanced core file naming.
The uswitch system call is used to get or change the compatibility environment specific behavior in Tru64 UNIX. 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).
When the USW_CORE bit of uswitch is set to 1, the process requests enhanced core file naming. The bit-mask, when set, can be inherited when the process forks. The bit-mask is cleared when an exec system call is executed. See core(4) for more information about core files.
Any
write(2)
references to NULL pointers generate a segmentation violation
signal (SIGSEGV) regardless of the
uswitch
value.
Usage of this system call may make the application non-portable.
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.
If the
uswitch
system call fails, the
uswitch
value remains unchanged and
errno
is set to the
following:
The
mask
is greater than USW_MAX or
less than USW_MIN.
The following code sample sets the bit mask for System V NULL pointer behavior:
... uswitch_val = uswitch(USC_GET,0); /* Gets current value*/ uswitch(USC_SET, uswitch_val | USW_NULLP); /* Sets USW_NULLP bit */ The following code sample sets the bit mask for enhanced core file names:
... uswitch_val = uswitch(USC_GET,0); /* Gets current value*/ uswitch(USC_SET, uswitch_val | USW_CORE); /* Sets USW_CORE bit */