From 3a05293f91943debe0008ab4d88b8cd0fa105d29 Mon Sep 17 00:00:00 2001 From: Miyotaka Sakai Date: Mon, 11 Oct 2004 07:50:26 +0000 Subject: [PATCH] exec_dump_fn support as SIGUSR2 handler to easy to debug (Logical change 1.91) git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@327 fd59a12c-fef9-0310-b244-a6a79926bd2f --- exec/amf.c | 8 ++++++-- exec/ckpt.c | 9 ++++++--- exec/clm.c | 3 ++- exec/evs.c | 3 ++- exec/evt.c | 3 ++- exec/handlers.h | 1 + exec/main.c | 11 ++++++++++- 7 files changed, 29 insertions(+), 9 deletions(-) diff --git a/exec/amf.c b/exec/amf.c index 1a5975df..2dfc8b5e 100644 --- a/exec/amf.c +++ b/exec/amf.c @@ -243,6 +243,10 @@ static int amf_confchg_fn ( struct sockaddr_in *left_list, int left_list_entries, struct sockaddr_in *joined_list, int joined_list_entries); +/*** +static void amf_dump (void); +***/ + static int amf_exit_fn (struct conn_info *conn_info); static int amf_exec_init_fn (void); @@ -398,7 +402,8 @@ struct service_handler amf_service_handler = { .confchg_fn = amf_confchg_fn, .libais_init_fn = message_handler_req_amf_init, .libais_exit_fn = amf_exit_fn, - .exec_init_fn = amf_exec_init_fn + .exec_init_fn = amf_exec_init_fn, + .exec_dump_fn = amf_dump }; static void grow_amf_track_table (struct conn_info *conn_info, int growby) @@ -2578,7 +2583,6 @@ static void amf_dump_comp (struct saAmfComponent *component ,void *data) void amf_dump ( ) { - enumerate_components (amf_dump_comp, NULL); fflush (stdout); diff --git a/exec/ckpt.c b/exec/ckpt.c index ab0aefb0..4546d2ca 100644 --- a/exec/ckpt.c +++ b/exec/ckpt.c @@ -169,7 +169,8 @@ struct service_handler ckpt_service_handler = { .confchg_fn = 0, /* ckpt service handler is not distributed */ .libais_init_fn = message_handler_req_lib_ckpt_init, .libais_exit_fn = 0, - .exec_init_fn = 0 + .exec_init_fn = 0, + .exec_dump_fn = 0 }; struct libais_handler ckpt_checkpoint_libais_handlers[] = @@ -289,7 +290,8 @@ struct service_handler ckpt_checkpoint_service_handler = { .confchg_fn = ckpt_checkpoint_confchg_fn, .libais_init_fn = message_handler_req_lib_ckpt_checkpoint_init, .libais_exit_fn = ckpt_checkpoint_exit_fn, - .exec_init_fn = ckpt_checkpoint_exec_init_fn + .exec_init_fn = ckpt_checkpoint_exec_init_fn, + .exec_dump_fn = 0 }; struct libais_handler ckpt_sectioniterator_libais_handlers[] = @@ -325,7 +327,8 @@ struct service_handler ckpt_sectioniterator_service_handler = { .confchg_fn = 0, /* Section Iterators are not distributed */ .libais_init_fn = message_handler_req_lib_ckpt_sectioniterator_init, .libais_exit_fn = ckptSectionIteratorApiFinalize, - .exec_init_fn = 0 + .exec_init_fn = 0, + .exec_dump_fn = 0 }; static struct saCkptCheckpoint *findCheckpoint (SaNameT *name) diff --git a/exec/clm.c b/exec/clm.c index 6fba5b54..3587aaa2 100644 --- a/exec/clm.c +++ b/exec/clm.c @@ -169,7 +169,8 @@ struct service_handler clm_service_handler = { .confchg_fn = clm_confchg_fn, .libais_init_fn = message_handler_req_clm_init, .libais_exit_fn = clm_exit_fn, - .exec_init_fn = clm_exec_init_fn + .exec_init_fn = clm_exec_init_fn, + .exec_dump_fn = 0 }; static int clm_exec_init_fn (void) diff --git a/exec/evs.c b/exec/evs.c index 0e0072d7..1a9e6b00 100644 --- a/exec/evs.c +++ b/exec/evs.c @@ -134,7 +134,8 @@ struct service_handler evs_service_handler = { .confchg_fn = evs_confchg_fn, .libais_init_fn = message_handler_req_evs_init, .libais_exit_fn = evs_exit_fn, - .exec_init_fn = evs_executive_initialize + .exec_init_fn = evs_executive_initialize, + .exec_dump_fn = 0 }; static int evs_executive_initialize (void) diff --git a/exec/evt.c b/exec/evt.c index 22278c84..c8980ecc 100644 --- a/exec/evt.c +++ b/exec/evt.c @@ -152,7 +152,8 @@ struct service_handler evt_service_handler = { .confchg_fn = evt_conf_change, .libais_init_fn = evt_initialize, .libais_exit_fn = evt_finalize, - .exec_init_fn = evt_exec_init + .exec_init_fn = evt_exec_init, + .exec_dump_fn = 0 }; static gmi_recovery_plug_handle evt_recovery_plug_handle; diff --git a/exec/handlers.h b/exec/handlers.h index a7d57277..4901e95f 100644 --- a/exec/handlers.h +++ b/exec/handlers.h @@ -58,6 +58,7 @@ struct service_handler { int (*libais_init_fn) (struct conn_info *conn_info, void *msg); int (*libais_exit_fn) (struct conn_info *conn_info); int (*exec_init_fn) (void); + void (*exec_dump_fn) (void); }; #endif /* HANDLERS_H_DEFINED */ diff --git a/exec/main.c b/exec/main.c index ce253029..e87f79b3 100644 --- a/exec/main.c +++ b/exec/main.c @@ -145,7 +145,13 @@ static inline struct conn_info *conn_info_create (int fd) { static void sigusr2_handler (int num) { - amf_dump (); + int i; + + for (i = 0; i < AIS_SERVICE_HANDLERS_COUNT; i++) { + if (ais_service_handlers[i]->exec_dump_fn) { + ais_service_handlers[i]->exec_dump_fn (); + } + } signal (SIGUSR2 ,sigusr2_handler); return; @@ -781,6 +787,9 @@ static void aisexec_service_handlers_init (void) */ for (i = 0; i < AIS_SERVICE_HANDLERS_COUNT; i++) { if (ais_service_handlers[i]->exec_init_fn) { + if (!ais_service_handlers[i]->exec_init_fn) { + continue; + } ais_service_handlers[i]->exec_init_fn (); } }