Back to index

glibc  2.9
Functions | Variables
fe_mask.c File Reference
#include <fenv.h>
#include <errno.h>
#include <signal.h>
#include <unistd.h>
#include <sysdep.h>
#include <sys/prctl.h>
#include <kernel-features.h>

Go to the source code of this file.

Functions

static void fe_mask_handler (int signum, struct sigcontext *sc)
const fenv_t__fe_mask_env (void)

Variables

static struct sigaction

Function Documentation

const fenv_t* __fe_mask_env ( void  )

Definition at line 44 of file fe_mask.c.

{
#if __ASSUME_NEW_PRCTL_SYSCALL == 0
# if defined PR_SET_FPEXC && defined PR_FP_EXC_DISABLED
  int result = INLINE_SYSCALL (prctl, 2, PR_SET_FPEXC, PR_FP_EXC_DISABLED);

  if (result == -1 && errno == EINVAL)
# endif
    {
      struct sigaction act;

      act.sa_handler = (sighandler_t) fe_mask_handler;
      sigemptyset (&act.sa_mask);
      act.sa_flags = 0;

      sigaction (SIGUSR1, &act, &oact);
      raise (SIGUSR1);
    }
#else
  INTERNAL_SYSCALL_DECL (err);
  INTERNAL_SYSCALL (prctl, err, 2, PR_SET_FPEXC, PR_FP_EXC_DISABLED);
#endif

  return FE_DFL_ENV;
}

Here is the call graph for this function:

static void fe_mask_handler ( int  signum,
struct sigcontext sc 
) [static]

Definition at line 36 of file fe_mask.c.

{
  sc->regs->msr &= ~0x900ul;  /* FE0 | FE1 */
  sigaction (SIGUSR1, &oact, NULL);
}

Here is the caller graph for this function:


Variable Documentation

struct sigaction [static]

Definition at line 33 of file fe_mask.c.