ADflow  v1.0
ADflow is a finite volume RANS solver tailored for gradient-based aerodynamic design optimization.
connect_signals.c
Go to the documentation of this file.
1 /*
2  ******************************************************************
3  * *
4  * File: connect_signals.c *
5  * Author: Edwin van der Weide *
6  * Starting date: 03-12-2003 *
7  * Last modified: 08-14-2005 *
8  * *
9  ******************************************************************
10 */
11 
12 /*
13  ******************************************************************
14  * *
15  * This file is only compiled if signalling is supported. *
16  * *
17  ******************************************************************
18 */
19 
20 #ifndef USE_NO_SIGNALS
21 
22 #include <stdio.h>
23 #include <signal.h>
24 
25 /*
26  ******************************************************************
27  * *
28  * Definition of the FORTRAN functions which are called when the *
29  * user has given one of his kill signals. *
30  * *
31  ******************************************************************
32 */
33 
34 #ifdef FORTRAN_CAPITALS
35 
36  extern void SET_SIGNAL_WRITE(void);
37  extern void SET_SIGNAL_WRITE_QUIT(void);
38 
39 #elif FORTRAN_DOUBLE_UNDERSCORE
40 
41  extern void set_signal_write__(void);
42  extern void set_signal_write_quit__(void);
43 
44 #elif FORTRAN_NO_UNDERSCORE
45 
46  extern void set_signal_write(void);
47  extern void set_signal_write_quit(void);
48 
49 #else
50 
51  extern void set_signal_write_(void);
52  extern void set_signal_write_quit_(void);
53 
54 #endif
55 
56 /*
57  ******************************************************************
58  * *
59  * The function signal_handler is called first when the user has *
60  * given a kill signal, as this function is connected to signal, *
61  * see the function connect_signals. The function signal_handler *
62  * itself is just an interface to the FORTRAN routines. *
63  * *
64  ******************************************************************
65 */
66 
67 void signal_handler(int sig)
68 {
69  switch(sig)
70  {
71  case SIGUSR1:
72 #ifdef FORTRAN_CAPITALS
73  SET_SIGNAL_WRITE();
74 #elif FORTRAN_DOUBLE_UNDERSCORE
75  set_signal_write__();
76 #elif FORTRAN_NO_UNDERSCORE
78 #else
80 #endif
81  break;
82 
83  case SIGUSR2:
84 #ifdef FORTRAN_CAPITALS
85  SET_SIGNAL_WRITE_QUIT();
86 #elif FORTRAN_DOUBLE_UNDERSCORE
87  set_signal_write_quit__();
88 #elif FORTRAN_NO_UNDERSCORE
90 #else
92 #endif
93  break;
94  }
95 }
96 
97 /*
98  ******************************************************************
99  * *
100  * The function connect_signals connects the kill commands *
101  * kill -USR1 and kill -USR2 to function signal_handler. *
102  * *
103  ******************************************************************
104 */
105 
106 void connect_signals(void)
107 {
108  signal(SIGUSR1, signal_handler);
109  signal(SIGUSR2, signal_handler);
110 }
111 
112 /*
113  ******************************************************************
114  * *
115  * Dummy functions to allow the calling from FORTRAN. *
116  * *
117  ******************************************************************
118 */
119 
123 
124 #endif /* USE_NO_SIGNALS */
void connect_signals(void)
void set_signal_write_quit_(void)
void CONNECT_SIGNALS()
void signal_handler(int sig)
void connect_signals__()
void set_signal_write_(void)
void connect_signals_()
subroutine set_signal_write_quit
Definition: signals.F90:93
subroutine set_signal_write
Definition: signals.F90:2