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
This commit is contained in:
Miyotaka Sakai 2004-10-11 07:50:26 +00:00
parent 018d786945
commit 3a05293f91
7 changed files with 29 additions and 9 deletions

View File

@ -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);

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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;

View File

@ -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 */

View File

@ -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 ();
}
}