From: Christian Herdtweck Date: Thu, 22 Jan 2015 16:43:36 +0000 (+0100) Subject: another amendment to signal handler: make signaled_flags_XY volatile sig_atomic_t... X-Git-Url: http://developer.intra2net.com/git/?a=commitdiff_plain;h=963e98a21c0348ed7b6724570435815720f6ec70;p=pingcheck another amendment to signal handler: make signaled_flags_XY volatile sig_atomic_t (I was ignorant) --- diff --git a/src/main.cpp b/src/main.cpp index ce92e0a..dfbc078 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -82,10 +82,10 @@ void reset_signal_handlers(); // data required for signal handling (SIGINT, SIGTERM, ... ) struct signal_data_struct { - bool signaled_flag_int; - bool signaled_flag_term; - bool signaled_flag_usr1; - bool signaled_flag_usr2; + volatile sig_atomic_t signaled_flag_int; + volatile sig_atomic_t signaled_flag_term; + volatile sig_atomic_t signaled_flag_usr1; + volatile sig_atomic_t signaled_flag_usr2; IoServiceItem io_service; void (*old_handler_int )(int); void (*old_handler_term)(int); @@ -96,10 +96,10 @@ struct signal_data_struct int config_log_level; signal_data_struct(): - signaled_flag_int( false ), - signaled_flag_term( false ), - signaled_flag_usr1( false ), - signaled_flag_usr2( false ), + signaled_flag_int( 0 ), + signaled_flag_term( 0 ), + signaled_flag_usr1( 0 ), + signaled_flag_usr2( 0 ), io_service(), old_handler_int( 0 ), old_handler_term( 0 ), @@ -316,19 +316,19 @@ signal_data_struct signal_data; /// registered as signal handler; just sets signal_data.signaled_flag void signal_handler_int(int param) { - signal_data.signaled_flag_int = true; + signal_data.signaled_flag_int = 1; } void signal_handler_term(int param) { - signal_data.signaled_flag_term = true; + signal_data.signaled_flag_term = 1; } void signal_handler_usr1(int param) { - signal_data.signaled_flag_usr1 = true; + signal_data.signaled_flag_usr1 = 1; } void signal_handler_usr2(int param) { - signal_data.signaled_flag_usr2 = true; + signal_data.signaled_flag_usr2 = 1; } @@ -354,19 +354,19 @@ void signal_checker( const boost::system::error_code &error ) else { if ( signal_data.signaled_flag_int ) { - signal_data.signaled_flag_int = false; + signal_data.signaled_flag_int = 0; GlobalLogger.notice() << "Received signal SIGINT --> will stop" << endl; want_stop = true; } else if ( signal_data.signaled_flag_term ) { - signal_data.signaled_flag_term = false; + signal_data.signaled_flag_term = 0; GlobalLogger.notice() << "Received signal SIGTERM --> will stop" << endl; want_stop = true; } else if ( signal_data.signaled_flag_usr1 ) { - signal_data.signaled_flag_usr1 = false; + signal_data.signaled_flag_usr1 = 0; int new_log_level = I2n::Logger::get_log_level()+1; I2n::Logger::set_log_level( new_log_level ); GlobalLogger.info() << "Received SIGUSR1 -- increased log level to " @@ -374,7 +374,7 @@ void signal_checker( const boost::system::error_code &error ) } else if ( signal_data.signaled_flag_usr2 ) { - signal_data.signaled_flag_usr2 = false; + signal_data.signaled_flag_usr2 = 0; I2n::Logger::set_log_level( signal_data.config_log_level ); GlobalLogger.info() << "Received SIGUSR2 -- reset log level to normal (" << I2n::Logger::get_log_level_string() << ")"; @@ -397,10 +397,10 @@ void signal_checker( const boost::system::error_code &error ) /// register own signal handlers; see reset_signal_handlers for undo void install_signal_handlers( const IoServiceItem io_service, const int config_log_level ) { - signal_data.signaled_flag_int = false; - signal_data.signaled_flag_term = false; - signal_data.signaled_flag_usr1 = false; - signal_data.signaled_flag_usr2 = false; + signal_data.signaled_flag_int = 0; + signal_data.signaled_flag_term = 0; + signal_data.signaled_flag_usr1 = 0; + signal_data.signaled_flag_usr2 = 0; signal_data.config_log_level = config_log_level; // install own signal handlers