source: rtems/cpukit/posix/include/rtems/posix/psignal.h @ 976162a6

4.104.114.95
Last change on this file since 976162a6 was 5ec2f12d, checked in by Ralf Corsepius <ralf.corsepius@…>, on 02/21/05 at 07:20:13

New header guards.

  • Property mode set to 100644
File size: 2.6 KB
Line 
1/**
2 * @file rtems/posix/psignal.h
3 */
4
5/*
6 *  $Id$
7 */
8
9#ifndef _RTEMS_POSIX_PSIGNAL_H
10#define _RTEMS_POSIX_PSIGNAL_H
11
12#include <rtems/posix/pthread.h>
13
14/*
15 *  Currently 32 signals numbered 1-32 are defined
16 */
17
18#define SIGNAL_EMPTY_MASK  0x00000000
19#define SIGNAL_ALL_MASK    0xffffffff
20
21#define signo_to_mask( _sig ) (1 << ((_sig) - 1))
22
23#define is_valid_signo( _sig ) \
24  ((_sig) >= 1 && (_sig) <= 32 )
25
26#define _States_Is_interruptible_signal( _states ) \
27  ( ((_states) & \
28    (STATES_WAITING_FOR_SIGNAL|STATES_INTERRUPTIBLE_BY_SIGNAL)) == \
29      (STATES_WAITING_FOR_SIGNAL|STATES_INTERRUPTIBLE_BY_SIGNAL))
30
31#define SIGACTION_TERMINATE \
32  { 0, SIGNAL_ALL_MASK, {_POSIX_signals_Abnormal_termination_handler} }
33#define SIGACTION_IGNORE \
34  { 0, SIGNAL_ALL_MASK, {SIG_IGN} }
35#define SIGACTION_STOP \
36  { 0, SIGNAL_ALL_MASK, {_POSIX_signals_Stop_handler} }
37#define SIGACTION_CONTINUE \
38  { 0, SIGNAL_ALL_MASK, {_POSIX_signals_Continue_handler} }
39
40#define SIG_ARRAY_MAX  (SIGRTMAX + 1)
41
42/*
43 *  Variables
44 */
45
46extern sigset_t  _POSIX_signals_Pending;
47
48extern struct sigaction _POSIX_signals_Default_vectors[ SIG_ARRAY_MAX ];
49
50extern struct sigaction _POSIX_signals_Vectors[ SIG_ARRAY_MAX ];
51
52extern Watchdog_Control _POSIX_signals_Alarm_timer;
53
54extern Thread_queue_Control _POSIX_signals_Wait_queue;
55
56extern Chain_Control _POSIX_signals_Inactive_siginfo;
57
58extern Chain_Control _POSIX_signals_Siginfo[ SIG_ARRAY_MAX ];
59
60/*
61 *  POSIX internal siginfo structure
62 */
63
64typedef struct {
65  Chain_Node  Node;
66  siginfo_t   Info;
67}  POSIX_signals_Siginfo_node;
68
69/*
70 *  Internal routines
71 */
72
73void _POSIX_signals_Manager_Initialization(
74  int  maximum_queued_signals
75);
76
77void _POSIX_signals_Post_switch_extension(
78  Thread_Control  *the_thread
79);
80
81boolean _POSIX_signals_Unblock_thread(
82  Thread_Control  *the_thread,
83  int              signo,
84  siginfo_t       *info
85);
86
87boolean _POSIX_signals_Check_signal(
88  POSIX_API_Control  *api,
89  int                 signo,
90  boolean             is_global
91);
92
93boolean _POSIX_signals_Clear_signals(
94  POSIX_API_Control  *api,
95  int                 signo,
96  siginfo_t          *info,
97  boolean             is_global,
98  boolean             check_blocked
99);
100
101int killinfo(
102  pid_t               pid,
103  int                 sig,
104  const union sigval *value
105);
106
107void _POSIX_signals_Set_process_signals(
108  sigset_t   mask
109);
110
111void _POSIX_signals_Clear_process_signals(
112  sigset_t   mask
113);
114
115/*
116 *  Default signal handlers
117 */
118
119#define _POSIX_signals_Stop_handler NULL
120#define _POSIX_signals_Continue_handler NULL
121
122void _POSIX_signals_Abnormal_termination_handler( int signo );
123
124#endif
125/* end of file */
Note: See TracBrowser for help on using the repository browser.