Navigation


Changeset 240:42e971738a37 in freeDiameter for extensions/dbg_monitor


Ignore:
Timestamp:
Mar 8, 2010, 5:34:42 PM (14 years ago)
Author:
Sebastien Decugis <sdecugis@nict.go.jp>
Branch:
default
Phase:
public
Message:

Use centralized signal management

File:
1 edited

Legend:

Unmodified
Added
Removed
  • extensions/dbg_monitor/dbg_monitor.c

    r202 r240  
    5050EXTENSION_ENTRY("dbg_monitor", monitor_main);
    5151
    52 /* Function called on receipt of SIGUSR1 */
    53 static void got_sig(int signal)
    54 {
    55         fd_log_debug("[dbg_monitor] Dumping extra information\n");
    56         CHECK_FCT_DO(fd_event_send(fd_g_config->cnf_main_ev, FDEV_DUMP_DICT, 0, NULL), /* continue */);
    57         CHECK_FCT_DO(fd_event_send(fd_g_config->cnf_main_ev, FDEV_DUMP_CONFIG, 0, NULL), /* continue */);
    58         CHECK_FCT_DO(fd_event_send(fd_g_config->cnf_main_ev, FDEV_DUMP_EXT, 0, NULL), /* continue */);
    59 }
    6052/* Thread to display periodical debug information */
    6153static pthread_t thr;
    6254static void * mn_thr(void * arg)
    6355{
    64         sigset_t sig;
    6556        int i = 0;
    66         struct sigaction act;
    6757        fd_log_threadname("Monitor thread");
    68        
    69         /* Catch signal SIGUSR1 */
    70         memset(&act, 0, sizeof(act));
    71         act.sa_handler = got_sig;
    72         CHECK_SYS_DO( sigaction(MONITOR_SIGNAL, &act, NULL), /* conitnue */ );
    73         sigemptyset(&sig);
    74         sigaddset(&sig, MONITOR_SIGNAL);
    75         CHECK_POSIX_DO(  pthread_sigmask(SIG_UNBLOCK, &sig, NULL), /* conitnue */  );
    7658       
    7759        /* Loop */
     
    9577}
    9678
     79/* Function called on receipt of MONITOR_SIGNAL */
     80static void got_sig(int signal)
     81{
     82        fd_log_debug("[dbg_monitor] Dumping extra information\n");
     83        CHECK_FCT_DO(fd_event_send(fd_g_config->cnf_main_ev, FDEV_DUMP_DICT, 0, NULL), /* continue */);
     84        CHECK_FCT_DO(fd_event_send(fd_g_config->cnf_main_ev, FDEV_DUMP_CONFIG, 0, NULL), /* continue */);
     85        CHECK_FCT_DO(fd_event_send(fd_g_config->cnf_main_ev, FDEV_DUMP_EXT, 0, NULL), /* continue */);
     86}
     87
     88/* Entry point */
    9789static int monitor_main(char * conffile)
    9890{
    9991        TRACE_ENTRY("%p", conffile);
     92       
     93        /* Catch signal SIGUSR1 */
     94        CHECK_FCT( fd_sig_register(MONITOR_SIGNAL, "dbg_monitor", got_sig));
     95       
    10096        CHECK_POSIX( pthread_create( &thr, NULL, mn_thr, NULL ) );
    10197        return 0;
    10298}
    10399
     100/* Cleanup */
    104101void fd_ext_fini(void)
    105102{
Note: See TracChangeset for help on using the changeset viewer.