_WCRTLINK int raise( int sig ) { __sig_func func; func = _RWD_sigtab[ sig ].func; switch( sig ) { case SIGFPE: __sigfpe_handler( FPE_EXPLICITGEN ); break; case SIGABRT: if( func == SIG_DFL ) { __terminate(); } case SIGILL: case SIGINT: case SIGSEGV: case SIGTERM: case SIGBREAK: case SIGUSR1: case SIGUSR2: case SIGUSR3: case SIGIDIVZ: case SIGIOVFL: if( func != SIG_IGN && func != SIG_DFL && func != SIG_ERR ) { _RWD_sigtab[ sig ].func = SIG_DFL; /* 09-nov-87 FWC */ (*func)( sig ); } break; default: return( -1 ); } return( 0 ); }
_WCRTLINK int raise( int sig ) { __sig_func func; func = _RWD_sigtab[ sig ]; switch( sig ) { #if !defined( __WINDOWS_386__ ) case SIGFPE: __sigfpe_handler( FPE_EXPLICITGEN ); break; case SIGABRT: if( func == SIG_DFL ) { __terminate(); } case SIGINT: if( func != SIG_IGN && func != SIG_DFL && func != SIG_ERR ) { _RWD_sigtab[ sig ] = SIG_DFL; /* 09-nov-87 FWC */ __restore_int23(); (*func)( sig ); } break; case SIGBREAK: if( func != SIG_IGN && func != SIG_DFL && func != SIG_ERR ) { _RWD_sigtab[ sig ] = SIG_DFL; /* 09-nov-87 FWC */ __restore_int_ctrl_break(); (*func)( sig ); } break; #else case SIGABRT: case SIGFPE: case SIGINT: case SIGBREAK: #endif case SIGILL: case SIGSEGV: case SIGTERM: case SIGUSR1: case SIGUSR2: case SIGUSR3: case SIGIDIVZ: case SIGIOVFL: if( func != SIG_IGN && func != SIG_DFL && func != SIG_ERR ) { _RWD_sigtab[ sig ] = SIG_DFL; /* 09-nov-87 FWC */ (*func)( sig ); } break; default: return( -1 ); } return( 0 ); }
_WCRTLINK int raise( int sig ) { __sig_func func; func = __GetSignalFunc( sig ); switch( sig ) { case SIGFPE: __sigfpe_handler( FPE_EXPLICITGEN ); break; case SIGABRT: if( func == SIG_DFL ) { __terminate(); } /* fall down */ case SIGILL: case SIGINT: case SIGSEGV: case SIGTERM: case SIGBREAK: case SIGUSR1: case SIGUSR2: case SIGUSR3: case SIGIDIVZ: case SIGIOVFL: if(( func != SIG_IGN ) && ( func != SIG_DFL ) && ( func != SIG_ERR )) { __SetSignalFunc( sig, SIG_DFL ); (*func)( sig ); } /* * If the CtrlSignalHandler was needed before we processed the * signal but is not needed NOW then we need to remove it since it * has just now become unnecessary. * * NOTE: This MAY be a bad thing to do since raise() might have been * called from within CtrlSignalHandler() in which case we are * removing the handler from within the handler. Does NT care? */ if( !CtrlHandlerIsNeeded() ) KillCtrlHandler(); break; default: return( -1 ); } return( 0 ); }
// called from emulator callback void _WCI86NEAR __raise_fpe( void ) { __sigfpe_handler( FPE_EXPLICITGEN ); }