ReactOS 0.4.16-dev-2279-gc890759
signal.h File Reference
#include <corecrt.h>
Include dependency graph for signal.h:

Go to the source code of this file.

Macros

#define SIGINT   2
 
#define SIGILL   4
 
#define SIGFPE   8
 
#define SIGSEGV   11
 
#define SIGTERM   15
 
#define SIGBREAK   21
 
#define SIGABRT   22
 
#define NSIG   (SIGABRT + 1)
 
#define SIG_DFL   ((__sighandler_t)0)
 
#define SIG_IGN   ((__sighandler_t)1)
 
#define SIG_ERR   ((__sighandler_t)-1)
 

Typedefs

typedef void(__cdecl__sighandler_t) (int)
 

Functions

_ACRTIMP void **__cdecl __pxcptinfoptrs (void)
 
_ACRTIMP __sighandler_t __cdecl signal (int sig, __sighandler_t func)
 
_ACRTIMP int __cdecl raise (int sig)
 

Macro Definition Documentation

◆ NSIG

#define NSIG   (SIGABRT + 1)

Definition at line 33 of file signal.h.

◆ SIG_DFL

#define SIG_DFL   ((__sighandler_t)0)

Definition at line 41 of file signal.h.

◆ SIG_ERR

#define SIG_ERR   ((__sighandler_t)-1)

Definition at line 43 of file signal.h.

◆ SIG_IGN

#define SIG_IGN   ((__sighandler_t)1)

Definition at line 42 of file signal.h.

◆ SIGABRT

#define SIGABRT   22

Definition at line 31 of file signal.h.

◆ SIGBREAK

#define SIGBREAK   21

Definition at line 30 of file signal.h.

◆ SIGFPE

#define SIGFPE   8

Definition at line 27 of file signal.h.

◆ SIGILL

#define SIGILL   4

Definition at line 26 of file signal.h.

◆ SIGINT

#define SIGINT   2

Definition at line 25 of file signal.h.

◆ SIGSEGV

#define SIGSEGV   11

Definition at line 28 of file signal.h.

◆ SIGTERM

#define SIGTERM   15

Definition at line 29 of file signal.h.

Typedef Documentation

◆ __sighandler_t

typedef void(__cdecl * __sighandler_t) (int)

Definition at line 39 of file signal.h.

Function Documentation

◆ __pxcptinfoptrs()

_ACRTIMP void **__cdecl __pxcptinfoptrs ( void  )

Definition at line 529 of file except.c.

530{
531 return (void**)&msvcrt_get_thread_data()->xcptinfo;
532}
thread_data_t *CDECL msvcrt_get_thread_data(void)
Definition: ucrt_tls_sup.c:59

◆ raise()

_ACRTIMP int __cdecl raise ( int  sig)

Definition at line 685 of file except.c.

686{
688
689 TRACE("(%d)\n", sig);
690
691 switch (sig)
692 {
693 case SIGFPE:
694 case SIGILL:
695 case SIGSEGV:
696 handler = sighandlers[sig];
697 if (handler == SIG_DFL) _exit(3);
698 if (handler != SIG_IGN)
699 {
701
702 sighandlers[sig] = SIG_DFL;
703
704 old_ep = *ep;
705 *ep = NULL;
706 if (sig == SIGFPE)
708 else
709 handler(sig);
710 *ep = old_ep;
711 }
712 break;
713 case SIGABRT:
714 case SIGINT:
715 case SIGTERM:
716 case SIGBREAK:
717 handler = sighandlers[sig];
718 if (handler == SIG_DFL) _exit(3);
719 if (handler != SIG_IGN)
720 {
721 sighandlers[sig] = SIG_DFL;
722 handler(sig);
723 }
724 break;
725 default:
726 return -1;
727 }
728 return 0;
729}
#define NULL
Definition: types.h:112
UINT(* handler)(MSIPACKAGE *)
Definition: action.c:7512
static __sighandler_t sighandlers[NSIG]
Definition: except.c:48
void **CDECL __pxcptinfoptrs(void)
Definition: except.c:529
void(CDECL * float_handler)(int, int)
Definition: except.c:535
void CDECL _exit(int exitcode)
Definition: exit.c:187
#define _FPE_EXPLICITGEN
Definition: float.h:129
#define SIG_DFL
Definition: signal.h:41
#define SIGINT
Definition: signal.h:25
#define SIGILL
Definition: signal.h:26
#define SIGTERM
Definition: signal.h:29
void(__cdecl * __sighandler_t)(int)
Definition: signal.h:39
#define SIGFPE
Definition: signal.h:27
#define SIGABRT
Definition: signal.h:31
#define SIG_IGN
Definition: signal.h:42
#define SIGSEGV
Definition: signal.h:28
#define SIGBREAK
Definition: signal.h:30
#define TRACE(s)
Definition: solgame.cpp:4

◆ signal()

_ACRTIMP __sighandler_t __cdecl signal ( int  sig,
__sighandler_t  func 
)

Definition at line 653 of file except.c.

654{
656
657 TRACE("(%d, %p)\n", sig, func);
658
659 if (func == SIG_ERR) return SIG_ERR;
660
661 switch (sig)
662 {
663 /* Cases handled internally. Note SIGTERM is never generated by Windows,
664 * so we effectively mask it.
665 */
666 case SIGABRT:
667 case SIGFPE:
668 case SIGILL:
669 case SIGSEGV:
670 case SIGINT:
671 case SIGTERM:
672 case SIGBREAK:
673 ret = sighandlers[sig];
674 sighandlers[sig] = func;
675 break;
676 default:
677 ret = SIG_ERR;
678 }
679 return ret;
680}
#define SIG_ERR
Definition: signal.h:43
return ret
Definition: mutex.c:146
GLenum func
Definition: glext.h:6028