/** * If a restart signal is received during exit-notification, reset the * signal and return true. If its a soft restart signal from the event loop * which implies the loop cannot continue, remap to SIGTERM to exit promptly. */ static bool ignore_restart_signals(struct context *c) { bool ret = false; #ifdef ENABLE_OCC if ( (c->sig->signal_received == SIGUSR1 || c->sig->signal_received == SIGHUP) && event_timeout_defined(&c->c2.explicit_exit_notification_interval) ) { if (c->sig->source == SIG_SOURCE_HARD) { msg(M_INFO, "Ignoring %s received during exit notification", signal_name(c->sig->signal_received, true)); signal_reset(c->sig); ret = true; } else { msg(M_INFO, "Converting soft %s received during exit notification to SIGTERM", signal_name(c->sig->signal_received, true)); register_signal(c, SIGTERM, "exit-with-notification"); ret = false; } } #endif return ret; }
static void execve_initialize_routine() { signal_reset(); vfs_reset(); mm_reset(); tls_reset(); dbt_reset(); }
static void process_sigusr2(const struct context *c) { struct status_output *so = status_open(NULL, 0, M_INFO, NULL, 0); print_status(c, so); status_close(so); signal_reset(c->sig); }
static void process_explicit_exit_notification_init(struct context *c) { msg(M_INFO, "SIGTERM received, sending exit notification to peer"); event_timeout_init(&c->c2.explicit_exit_notification_interval, 1, 0); reset_coarse_timers(c); signal_reset(c->sig); halt_non_edge_triggered_signals(); c->c2.explicit_exit_notification_time_wait = now; }
/* Reload thread */ int reload_vrrp_thread(thread * thread_obj) { /* set the reloading flag */ SET_RELOAD; SYS_VRRP_LOG_INFO("VRRP configure have been reload."); /* Close sockpool */ free_vrrp_sockpool(vrrp_data); /* Signal handling */ signal_reset(); signal_set(SIGHUP, sighup_vrrp, NULL); signal_set(SIGINT, sigend_vrrp, NULL); signal_set(SIGTERM, sigend_vrrp, NULL); signal_ignore(SIGPIPE); /* Destroy master thread */ thread_destroy_master(master); master = thread_make_master(); free_global_data(data); /* add by zhouben */ backup_if_queue(); kernel_netlink_close(); free_vrrp_buffer(); gratuitous_arp_close(); ndisc_close(); vrrp_trackip_close(); /* Save previous conf data */ old_vrrp_data = vrrp_data; vrrp_data = NULL; #ifdef _WITH_LVS_ /* Clean ipvs related */ //ipvs_stop(); #endif /* Reload the conf */ mem_allocated = 0; vrrp_signal_init(); signal_set(SIGCHLD, thread_child_handler, master); start_vrrp(); /* free backup data */ free_old_interface_queue_only(); free_vrrp_data(old_vrrp_data); UNSET_RELOAD; /*end of reload, store the state to file*/ reloading = 0; vrrp_state_store(); return 0; }
/* Reload thread */ int reload_vrrp_thread(thread_t * thread) { /* set the reloading flag */ SET_RELOAD; /* Signal handling */ signal_reset(); signal_handler_destroy(); /* Destroy master thread */ vrrp_dispatcher_release(vrrp_data); kernel_netlink_close(); thread_destroy_master(master); master = thread_make_master(); free_global_data(global_data); free_interface_queue(); free_vrrp_buffer(); gratuitous_arp_close(); ndisc_close(); #ifdef _WITH_LVS_ if (vrrp_ipvs_needed()) { /* Clean ipvs related */ ipvs_stop(); } #endif /* Save previous conf data */ old_vrrp_data = vrrp_data; vrrp_data = NULL; /* Reload the conf */ mem_allocated = 0; vrrp_signal_init(); signal_set(SIGCHLD, thread_child_handler, master); start_vrrp(); /* free backup data */ free_vrrp_data(old_vrrp_data); UNSET_RELOAD; return 0; }
/* Reload thread */ int reload_check_thread(thread_t * thread) { /* set the reloading flag */ SET_RELOAD; log_message(LOG_INFO, "Got SIGHUP, reloading checker configuration"); /* Signals handling */ signal_reset(); signal_handler_destroy(); /* Destroy master thread */ thread_destroy_master(master); master = thread_make_master(); free_global_data(global_data); free_checkers_queue(); #ifdef _WITH_VRRP_ free_interface_queue(); #endif free_ssl(); ipvs_stop(); /* Save previous conf data */ old_check_data = check_data; check_data = NULL; /* Reload the conf */ mem_allocated = 0; check_signal_init(); signal_set(SIGCHLD, thread_child_handler, master); start_check(); /* free backup data */ free_check_data(old_check_data); UNSET_RELOAD; return 0; }
void setup_hw(void) { /* * power savings ! * * total optimized power consumption of the cpu module: 2.2mA * incl. status LED (PWMed) * * the MBI5168 LED drivers take about 15mA each in idle mode :-( * */ // turn all pins to inputs (default anyway) + pull-up on // saved about another 0.5mA on my board PORTA = 0xFF; PORTB = 0xFF; /* * now configure the pins we actually need */ DDRB |= _BV(PB0); // display enable pin as output PORTB |= _BV(PB0); // pullup on DDRB |= _BV(PB2); // led pin as output PORTB |= _BV(PB2); // led on // USI stuff DDRB |= _BV(PB1); // latch pin as output PORTB &= ~_BV(PB1); // latch low DDRA |= _BV(PA5); // as output (DO) DDRA |= _BV(PA4); // as output (USISCK) DDRA &= ~_BV(PA6); // as input (DI) PORTA |= _BV(PA6); // pullup on (DI) // only for debugging // DDRA |= _BV(PA2); // as output // PORTA &= _BV(PA2); // set LOW // DDRA |= _BV(PA3); // as output // PORTA &= _BV(PA3); // set LOW // DDRA |= _BV(PA7); // as output // PORTA &= _BV(PA7); // set LOW /* * setup ADC * * using single conversion mode * --> setup in adc_read() for every conversion necessary! * */ PORTA &= ~_BV(PA1); // internal pull-up off on switches pin /* * getting ready */ system_ticker_setup(); led_driver_setup(); // disable for adc_test() #ifdef USE_SOFT_UART soft_uart_setup(); #endif sei(); // turn global irq flag on #ifdef DEBUG signal_reset(); // needs the system_ticker to run and sei() as well ! #endif }