60 template <
typename CONT_TYPE>
61 void register_cb(
const std::string& name, std::unordered_map<std::string, std::function<CONT_TYPE>>& container,
62 const std::function<CONT_TYPE>&
cb,
const std::string&
type_of_cb);
64 template <
typename CONT_TYPE>
65 void deregister_cb(
const std::string& name, std::unordered_map<std::string, std::function<CONT_TYPE>>& container,
68 void register_on_exit_cb(
const std::string& name,
const std::function<
void()>&
cb);
70 void deregister_on_exit_cb(
const std::string& name);
72 void register_handler(
const std::string& name,
const std::function<
void(
int)>&
handler);
74 void deregister_handler(
const std::string& name);
78 void end_of_simulation();
80 void set_sig_num(
int val);
87 static void pass_sig_handler(
int sig);
89 static void force_exit_sig_handler(
int sig);
91 void add_to_block_set(
int signum);
93 void reset_block_set();
95 void block_signal_set();
117 int get_write_sock_end();
130 void _start_pass_signal_handler();
131 void _update_sig_cb(
int signum, Handler_CB
s_cb);
133 void _update_all_sigs_cb();
135 void _change_sig_cbs_to_dfl();
137 void add_sig_handler(
int signum, Handler_CB
s_cb);
140 std::map<int, Handler_CB> m_signals;
141 std::map<int, std::string> error_signals;
142 std::unordered_map<std::string, std::function<
void(
int)>> handlers;
143 std::unordered_map<std::string, std::function<
void()>> exit_handlers;
145 std::mutex thread_start_mutex;
146 std::mutex signals_mutex;
147 std::thread pass_handler;
148 std::atomic_bool stop_running;
149 std::atomic_bool is_pass_handler_requested;
150 std::atomic_int32_t sig_num;
156 struct pollfd self_pipe_monitor;
158 int self_sockpair_fd[2];