floating point exception status not inherited by exec
James Salter
jsalter at slo.uucp
Sun Mar 25 13:29:38 AEST 1990
In article <795 at s7.Morgan.COM> amull at Morgan.COM (Andrew P. Mullhaupt) writes:
>
> On SCO UNIX System V/386 R3.2:
>
>I need to preserve the state of the floating point exception mask
>across an exec(). Experiments show that the exception mask and the
>sticky bit status seems to be preserved across fork() (i.e. is
>inherited by a child) but when exec is invoked, the exceptions may
>change. This has ummm - 'unpleasant' consequences. Note that it
>is not sufficient to work at the level of SIGFPE, but it is actually
>required to specify the floating point exception mask and sticky bit
>status to different values than the (otherwise sensible) defaults.
You mean apart from rewriting the exec() function? :-)
Realistically, the only way you could preserve the state is through a
save mechanism before the exec() and a restore after the exec().
In the System V/386 3.2 programmer's reference manual I have, it lists
some routines under FPGETROUND(3C). Including the functions:
fpgetmask(), fpsetmask(), fpgetsticky(), fpsetsticky()
and the include file:
#include <ieeefp.h>
I don't know what SCO version does...
To do your own such routines, it would require some machine coding and
use of at least a short int to save just the status word. If you require
the status AND the control word to be saved, just store it into a long int
and do some byte shifting. Or use two shorts if you're lazy...
>Andrew Mullhaupt
jim/jsalter IBM AWD T465/(415)855-4427 VNET: JSALTER at PALOALTO
UUCP: ..!uunet!ibmsupt!jsalter Disc: Any opinions are mine.
IP: ibmsupt!jsalter at uunet.uu.net "PS/2 it, or DIE!"
More information about the Comp.unix.wizards
mailing list