Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
first commit to add the mpich-test suite to smpi tesh suite. Obviously all tests...
[simgrid.git] / teshsuite / smpi / mpich-test / env / sigchk.c
1 /* This file provides routines to check for the use of signals by software */
2
3 #include <stdio.h>
4 #include <signal.h>
5 #include "test.h"
6 #include "mpi.h"
7
8 /* In order to quiet noisy C compilers, we provide ANSI-style prototypes
9    where possible */
10 int SYiCheckSig ( FILE *, int, const char * );
11 int SYCheckSignals ( FILE * );
12
13 #ifdef HAVE_SIGACTION
14 int SYiCheckSig( fp, sig, signame )
15 FILE *fp;
16 int  sig;
17 const char *signame;
18 {
19 static int firstmsg = 1;
20 struct sigaction libsig;
21
22 sigaction( sig, NULL, &libsig);
23 if (libsig.sa_handler != SIG_IGN && libsig.sa_handler != SIG_DFL) {
24     if (firstmsg) {
25         firstmsg = 0;
26         fprintf( fp, "Some signals have been changed.  This is not an error\n\
27 but rather is a warning that user programs should not redefine the signals\n\
28 listed here\n" );
29         }
30     fprintf( fp, "Signal %s has been changed\n", signame );
31     return 1;
32     }
33 return 0;
34 }
35 #else
36 int SYiCheckSig( fp, sig, signame )
37 FILE *fp;
38 int  sig;
39 const char *signame;
40 {
41 void (*oldsig)();
42 static int firstmsg = 1;
43
44 oldsig = signal(sig,SIG_IGN);
45 if (oldsig != SIG_IGN && oldsig != SIG_DFL) {
46     if (firstmsg) {
47         firstmsg = 0;
48         fprintf( fp, "Some signals have been changed.  This is not an error\n\
49 but rather is a warning that user programs should not redefine the signals\n\
50 listed here\n" );
51         }
52     fprintf( fp, "Signal %s has been changed\n", signame );
53     return 1;
54     }
55 signal(sig,oldsig);
56 return 0;
57 }
58 #endif
59
60 int SYCheckSignals( fp )
61 FILE *fp;
62 {
63 int  ndiff = 0;
64
65 #ifdef SIGHUP
66 ndiff += SYiCheckSig( fp, SIGHUP, "SIGHUP" );
67 #endif
68
69 #ifdef SIGINT
70 ndiff += SYiCheckSig( fp, SIGINT, "SIGINT" );
71 #endif
72
73 #ifdef SIGQUIT
74 ndiff += SYiCheckSig( fp, SIGQUIT, "SIGQUIT" );
75 #endif
76
77 #ifdef SIGILL
78 ndiff += SYiCheckSig( fp, SIGILL, "SIGILL" );
79 #endif
80
81 #ifdef SIGTRAP
82 ndiff += SYiCheckSig( fp, SIGTRAP, "SIGTRAP" );
83 #endif
84
85 #ifdef SIGIOT
86 ndiff += SYiCheckSig( fp, SIGIOT, "SIGIOT" );
87 #endif
88
89 #ifdef SIGABRT
90 ndiff += SYiCheckSig( fp, SIGABRT, "SIGABRT" );
91 #endif
92
93 #ifdef SIGEMT
94 ndiff += SYiCheckSig( fp, SIGEMT, "SIGEMT" );
95 #endif
96
97 #ifdef SIGFPE
98 ndiff += SYiCheckSig( fp, SIGFPE, "SIGFPE" );
99 #endif
100
101 #ifdef SIGBUS
102 ndiff += SYiCheckSig( fp, SIGBUS, "SIGBUS" );
103 #endif
104
105 #ifdef SIGSEGV
106 ndiff += SYiCheckSig( fp, SIGSEGV, "SIGSEGV" );
107 #endif
108
109 #ifdef SIGSYS
110 ndiff += SYiCheckSig( fp, SIGSYS, "SIGSYS" );
111 #endif
112
113 #ifdef SIGPIPE
114 ndiff += SYiCheckSig( fp, SIGPIPE, "SIGPIPE" );
115 #endif
116
117 #ifdef SIGALRM
118 ndiff += SYiCheckSig( fp, SIGALRM, "SIGALRM" );
119 #endif
120
121 #ifdef SIGTERM
122 ndiff += SYiCheckSig( fp, SIGTERM, "SIGTERM" );
123 #endif
124
125 #ifdef SIGURG
126 ndiff += SYiCheckSig( fp, SIGURG, "SIGURG" );
127 #endif
128
129 #ifdef SIGTSTP
130 ndiff += SYiCheckSig( fp, SIGTSTP, "SIGTSTP" );
131 #endif
132
133 #ifdef SIGCONT
134 ndiff += SYiCheckSig( fp, SIGCONT, "SIGCONT" );
135 #endif
136
137 #ifdef SIGCHLD
138 ndiff += SYiCheckSig( fp, SIGCHLD, "SIGCHLD" );
139 #endif
140
141 #ifdef SIGTTIN
142 ndiff += SYiCheckSig( fp, SIGTTIN, "SIGTTIN" );
143 #endif
144
145 #ifdef SIGTTOU
146 ndiff += SYiCheckSig( fp, SIGTTOU, "SIGTTOU" );
147 #endif
148
149 #ifdef SIGIO
150 ndiff += SYiCheckSig( fp, SIGIO, "SIGIO" );
151 #endif
152
153 #ifdef SIGPOLL
154 ndiff += SYiCheckSig( fp, SIGPOLL, "SIGPOLL" );
155 #endif
156
157 #ifdef SIGXCPU
158 ndiff += SYiCheckSig( fp, SIGXCPU, "SIGXCPU" );
159 #endif
160
161 #ifdef SIGXFSZ
162 ndiff += SYiCheckSig( fp, SIGXFSZ, "SIGXFSZ" );
163 #endif
164
165 #ifdef SIGVTALRM
166 ndiff += SYiCheckSig( fp, SIGVTALRM, "SIGVTALRM" );
167 #endif
168
169 #ifdef SIGPROF
170 ndiff += SYiCheckSig( fp, SIGPROF, "SIGPROF" );
171 #endif
172
173 #ifdef SIGWINCH
174 ndiff += SYiCheckSig( fp, SIGWINCH, "SIGWINCH" );
175 #endif
176
177 #ifdef SIGLOST
178 ndiff += SYiCheckSig( fp, SIGLOST, "SIGLOST" );
179 #endif
180
181 #ifdef SIGUSR1
182 ndiff += SYiCheckSig( fp, SIGUSR1, "SIGUSR1" );
183 #endif
184
185 #ifdef SIGUSR2
186 ndiff += SYiCheckSig( fp, SIGUSR2, "SIGUSR2" );
187 #endif
188
189 return ndiff;
190 }
191
192
193 int main( int argc, char **argv )
194 {
195     int err;
196     MPI_Init( &argc, &argv );
197     err = SYCheckSignals( stdout );
198     Test_Waitforall( );
199     MPI_Finalize();
200     return err;
201 }