fp_exception_mask()

Get or set the current exception mask

Synopsis:

#include <fpstatus.h>

int fp_exception_mask ( int new_mask,
                        int set );

Arguments:

new_mask
The new mask to apply. The bits include:
set
A value that indicates what you want the function to do:

Library:

libm

Use the -l m option to qcc to link against this library.

Description:

The fp_exception_mask() function gets or sets the current exception mask, depending on the value of the set argument.

Returns:

If set < 0
The current exception mask.
If set ≥ 0
The previous mask.

Note: This function doesn't return a special value to indicate that an error occurred. If you want to check for errors, set errno to 0, call the function, and then check errno again.

Examples:

#include <fpstatus.h>

int main(int argc, char** argv) 
{
   int ret;

   if ((ret = fp_exception_mask(0, -1)) < 0)
      printf("*** Problem retrieving exceptions \n");
   printf("Exceptions Enabled: \n\t");
   if (ret & _FP_EXC_INEXACT)
      printf("Inexact ");
   if (ret & _FP_EXC_DIVZERO)
      printf("DivZero ");
   if (ret & _FP_EXC_UNDERFLOW)
      printf("Underflow ");
   if (ret & _FP_EXC_OVERFLOW)
      printf("Overflow ");
   if (ret & _FP_EXC_INVALID)
      printf("Invalid ");
   printf("\n");


   /* Set the exception mask to enable division by zero errors */
   if ((ret = fp_exception_mask(_FP_EXC_DIVZERO, 1)) < 0)
      printf("*** Problem setting exceptions \n");
   if ((ret = fp_exception_mask(0, -1)) < 0)
      printf("*** Problem retrieving exceptions \n");
   printf("Exceptions Enabled: \n\t");
   if (ret & _FP_EXC_INEXACT)
      printf("Inexact ");
   if (ret & _FP_EXC_DIVZERO)
      printf("DivZero ");
   if (ret & _FP_EXC_UNDERFLOW)
      printf("Underflow ");
   if (ret & _FP_EXC_OVERFLOW)
      printf("Overflow ");
   if (ret & _FP_EXC_INVALID)
      printf("Invalid ");
   printf("\n");

   return(0);
}

Classification:

QNX Neutrino

Safety:
Cancellation point No
Interrupt handler No
Signal handler No
Thread Yes

See also:

fp_exception_value(), fp_precision(), fp_rounding(), fp_setenv()