sigfpe man page on OpenIndiana

Man page or keyword search:  
man Server   20441 pages
apropos Keyword Search (all sections)
Output format
OpenIndiana logo
[printable version]

sigfpe(3C)		 Standard C Library Functions		    sigfpe(3C)

NAME
       sigfpe - signal handling for specific SIGFPE codes

SYNOPSIS
       #include <floatingpoint.h>
       #include <siginfo.h>

       sigfpe_handler_type sigfpe(sigfpe_code_type code,
	    sigfpe_handler_type hdl);

DESCRIPTION
       The  sigfpe()  function allows signal handling to be specified for par‐
       ticular SIGFPE codes.  A call to sigfpe() defines a new handler hdl for
       a  particular  SIGFPE  code and returns the old handler as the value of
       the function sigfpe(). Normally handlers are specified as  pointers  to
       functions;   the	  special   cases   SIGFPE_IGNORE,  SIGFPE_ABORT,  and
       SIGFPE_DEFAULT allow ignoring, dumping core using abort(3C), or default
       handling	  respectively.	  Default  handling  is	 to  dump  core	 using
       abort(3C).

       The code argument is usually one of  the	 five  IEEE754-related	SIGFPE
       codes:

	 FPE_FLTRES   fp_inexact − floating-point inexact result
	 FPE_FLTDIV   fp_division − floating-point division by zero
	 FPE_FLTUND   fp_underflow − floating-point underflow
	 FPE_FLTOVF   fp_overflow − floating-point overflow
	 FPE_FLTINV   fp_invalid − floating-point invalid operation

       Three  steps  are  required to intercept an IEEE754-related SIGFPE code
       with sigfpe():

	   1.	  Set up a handler with sigfpe().

	   2.	  Enable the relevant IEEE754 trapping capability in the hard‐
		  ware, perhaps by using assembly-language instructions.

	   3.	  Perform   a  floating-point  operation  that	generates  the
		  intended IEEE754 exception.

       The sigfpe() function never changes floating-point hardware  mode  bits
       affecting  IEEE754 trapping.  No IEEE754-related SIGFPE signals will be
       generated unless those hardware mode bits are enabled.

       SIGFPE signals can be handled  using  sigfpe(),	sigaction(2)  or  sig‐
       nal(3C).	 In  a particular program, to avoid confusion, use only one of
       these interfaces to handle SIGFPE signals.

EXAMPLES
       Example 1 Example Of A User-Specified Signal Handler

       A user-specified signal handler might look like this:

	 #include <floatingpoint.h>
	 #include <siginfo.h>
	 #include <ucontext.h>
	 /*
	 * The sample_handler prints out a message then commits suicide.
	 */
	 void
	 sample_handler(int sig, siginfo_t *sip, ucontext_t *uap) {
	      char *label;
		 switch (sip−>si_code) {
	      case FPE_FLTINV: label = "invalid operand"; break;
	      case FPE_FLTRES: label = "inexact"; break;
	      case FPE_FLTDIV: label = "division-by-zero"; break;
	      case FPE_FLTUND: label = "underflow"; break;
	      case FPE_FLTOVF: label = "overflow"; break;
	      default: label = "???"; break;
	      }
	      fprintf(stderr,
		 "FP exception %s (0x%x) occurred at address %p.\n",
		 label, sip−>si_code, (void *) sip−>si_addr);
	      abort();
	 }

       and it might be set up like this:

	 #include <floatingpoint.h>
	 #include <siginfo.h>
	 #include <ucontext.h>
	 extern void sample_handler(int, siginfo_t *, ucontext_t *);
	 main(void) {
	       sigfpe_handler_type hdl, old_handler1, old_handler2;
	 /*
	  * save current fp_overflow and fp_invalid handlers; set the new
	 * fp_overflow handler to sample_handler() and set the new
	 * fp_invalid handler to SIGFPE_ABORT (abort on invalid)
	 */
	     hdl = (sigfpe_handler_type) sample_handler;
	     old_handler1 = sigfpe(FPE_FLTOVF, hdl);
	     old_handler2 = sigfpe(FPE_FLTINV, SIGFPE_ABORT);
	     ...
	 /*
	  * restore old fp_overflow and fp_invalid handlers
	  */
	      sigfpe(FPE_FLTOVF, old_handler1);
	      sigfpe(FPE_FLTINV, old_handler2);
	 }

FILES
       /usr/include/floatingpoint.h

       /usr/include/siginfo.h

ATTRIBUTES
       See attributes(5) for descriptions of the following attributes:

       ┌─────────────────────────────┬─────────────────────────────┐
       │      ATTRIBUTE TYPE	     │	    ATTRIBUTE VALUE	   │
       ├─────────────────────────────┼─────────────────────────────┤
       │MT-Level		     │Safe			   │
       └─────────────────────────────┴─────────────────────────────┘

SEE ALSO
       sigaction(2),   abort(3C),   signal(3C),	   attributes(5),    floating‐
       point.h(3HEAD)

DIAGNOSTICS
       The  sigfpe()  function	returns (void(*)())-1 if code is not zero or a
       defined SIGFPE code.

SunOS 5.11			  4 May 2004			    sigfpe(3C)
[top]

List of man pages available for OpenIndiana

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net