PhoenixThread
1.2.3
Tools to ease parallel programming in C++
Toggle main menu visibility
Loading...
Searching...
No Matches
SignalCatcher.cpp
Go to the documentation of this file.
1
/***************************************
2
Auteur : Pierre Aubert
3
Mail : pierre.aubert@lapp.in2p3.fr
4
Licence : CeCILL-C
5
****************************************/
6
7
#include <map>
8
#include <mutex>
9
10
#include "
SignalCatcher.h
"
11
13
struct
SignalHandler
{
15
std::mutex
currentMutex
;
17
int
expectedSignal
;
19
bool
isSignalRecieved
;
20
};
21
23
std::map<int, SignalHandler>
phoenix_mapSignalHandler
;
24
26
28
void
phoenix_sig_handler
(
int
signum){
29
std::map<int, SignalHandler>::iterator it(
phoenix_mapSignalHandler
.find(signum));
30
if
(it !=
phoenix_mapSignalHandler
.end()){
31
std::lock_guard<std::mutex> guard(it->second.currentMutex);
32
it->second.isSignalRecieved =
true
;
33
}
34
}
35
37
40
void
phoenix_addSignalCatcher
(
int
signalType){
41
SignalHandler
& handler =
phoenix_mapSignalHandler
[signalType];
//Add the signal to the main map of signals
42
handler.
expectedSignal
= signalType;
43
handler.
isSignalRecieved
=
false
;
44
signal(signalType,
phoenix_sig_handler
);
45
}
46
48
51
bool
phoenix_isSignalRecived
(
int
signalType){
52
bool
b(
false
);
53
std::map<int, SignalHandler>::iterator it(
phoenix_mapSignalHandler
.find(signalType));
54
if
(it !=
phoenix_mapSignalHandler
.end()){
55
std::lock_guard<std::mutex> guard(it->second.currentMutex);
56
b = it->second.isSignalRecieved;
57
}
58
return
b;
59
}
60
61
62
63
phoenix_sig_handler
void phoenix_sig_handler(int signum)
Signal handler.
Definition
SignalCatcher.cpp:28
phoenix_addSignalCatcher
void phoenix_addSignalCatcher(int signalType)
Add a signal catcher to handle the given signal.
Definition
SignalCatcher.cpp:40
phoenix_isSignalRecived
bool phoenix_isSignalRecived(int signalType)
Check if the given signal has been recived by the program (or a thread).
Definition
SignalCatcher.cpp:51
phoenix_mapSignalHandler
std::map< int, SignalHandler > phoenix_mapSignalHandler
Map of signal handlers.
Definition
SignalCatcher.cpp:23
SignalCatcher.h
SignalHandler
Handles signal with boolean an mutex.
Definition
SignalCatcher.cpp:13
SignalHandler::isSignalRecieved
bool isSignalRecieved
True if the signal has been recived, false otherwise.
Definition
SignalCatcher.cpp:19
SignalHandler::currentMutex
std::mutex currentMutex
Mutex of the class to avoid conflict manipulation between threads.
Definition
SignalCatcher.cpp:15
SignalHandler::expectedSignal
int expectedSignal
Signal we want to check.
Definition
SignalCatcher.cpp:17
src
SignalCatcher.cpp
Generated by
1.17.0