![]() Chapter Contents |
![]() Previous |
![]() Next |
SAS/C Software: Changes and Enhancements, Release 6.50 |
This section describes
the SAS/C OpenEdition library functions enhanced by Release 6.50.
As a result of
changes in the MVS operating system, the
alarmd
function description for Release 6.50 requires an update in the CAUTION Section of the "Function Descriptions" in Chapter 6 of the
SAS/C Library Reference, Volume 1, Release 6.00 on page 6-32.
Replace the following sentence under CAUTION:
Old | If
SIGALRM is handled by OpenEdition,
alarmd is not available. |
New | If
SIGALRM is handled by OpenEdition,
alarmd is not available in releases of MVS prior to MVS 5.2.2. |
The
sigsetjmp
and
siglongjmp
functions, introduced in SAS/C Release 6.00, allow the signal mask to be saved as part of a
setjmp
operation, and restored as part of a
longjmp
operation. In the 6.00 implementation,
siglongjmp
restored the signal mask before searching the stack for
blkjmp
callers.
This meant that the old signal mask was restored before any caller of
blkjmp
received control to intercept the jump. Since in most cases the restored signal mask allows more signals than the old signal mask, this had the
effect of allowing a signal to be discovered in a
blkjmp
cleanup routine, thereby causing part of the cleanup to be bypassed.
The 6.50 version of the library modifies
siglongjmp
so that the signal mask is changed as late as possible. If there is no interference from
blkjmp
callers, the signal mask is changed immediately before control is returned to the target
sigsetjmp
call.
As with the 6.00 library, if a call to
siglongjmp
is intercepted by
blkjmp
, the signal mask is restored immediately before control is returned to the
blkjmp
call.
Additionally, a new function called
sigblkjmp
has been defined. This function is an enhanced version of
blkjmp
, which stores the signal mask data associated with a
siglongjmp
in the buffer passed to
sigblkjmp
as well as the registers and other environmental information.
This means that the signal mask is not changed when control is
given to a
sigblkjmp
cleanup routine. The mask is only changed when control passes to the original
sigsetjmp
call, or to a caller of the old
blkjmp
function.
Use of
sigblkjmp
rather than
blkjmp
is recommended in any program which uses
sigsetjmp
and
siglongjmp
.
Note: Both
blkjmp
and
sigblkjmp
are compatible with both the
setjmp
and
longjmp
functions as well as with their
sig
- versions.
As a result of
changes in the MVS operating system, the
sleepd
function description requires an update in the DESCRIPTION Section of the "Function Descriptions" in Chapter 6 of the SAS/C
Library Reference, Volume 1, Release 6.00 on page 6-434.
Replace the following sentences under DESCRIPTION:
IBM
has changed the way the OpenEdition
tcsetpgrp
system call works. As a result, several changes for Release 6.50 are required to the existing documentation, SAS/C Library Reference,
Volume 2, Release 6.00.
First, the
tcsetpgrp
function needs an addition note in the DESCRIPTION Section on page 20-96 to clarify the process handling of the
SIGTTOU
signal.
Replace the following sentence under DESCRIPTION:
Second, a minor typographical error was discovered in
last paragraph of the
tcsetpgrp
DESCRIPTION Section on page 20-96 and was not corrected by the errata sheet for Volume 2.
Make the following correction under DESCRIPTION:
Old | SITTIN |
New | SIGTTIN |
Lastly, due to its level of complexity, the example for
setpgid,
which uses
tcsetpgrp,
requires modifications. The
setpgid
example is located in the SAS/C Library Reference, Volume 2, Release 6.00 in the middle of page 20-75.
Replace the following lines under EXAMPLE:
Old
/* become foreground process group */ if (tcsetpgrp(STDIN_FILENO, getpid())) erreport("tcsetpgrp");
New
/* ignore SIGTTOU during tcsetpgrp */ signal(SIGTTOU, SIG_IGN); /* become foreground process group */ if (tcsetpgrp(STDIN_FILENO, getpid())) erreport("tcsetpgrp"); /* restore normal SIGTTOU handling */ signal(SIGTTOU, SIG_DFL);
![]() Chapter Contents |
![]() Previous |
![]() Next |
![]() Top of Page |
Copyright © Mon Mar 9 09:11:22 EST 1998 by SAS Institute Inc., Cary, NC, USA. All rights reserved.