Преглед изворни кода

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
Miyotaka Sakai пре 21 година
родитељ
комит
3a05293f91
7 измењених фајлова са 29 додато и 9 уклоњено
  1. 6 2
      exec/amf.c
  2. 6 3
      exec/ckpt.c
  3. 2 1
      exec/clm.c
  4. 2 1
      exec/evs.c
  5. 2 1
      exec/evt.c
  6. 1 0
      exec/handlers.h
  7. 10 1
      exec/main.c

+ 6 - 2
exec/amf.c

@@ -243,6 +243,10 @@ static int amf_confchg_fn (
     struct sockaddr_in *left_list, int left_list_entries,
     struct sockaddr_in *left_list, int left_list_entries,
     struct sockaddr_in *joined_list, int joined_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_exit_fn (struct conn_info *conn_info);
 
 
 static int amf_exec_init_fn (void);
 static int amf_exec_init_fn (void);
@@ -398,7 +402,8 @@ struct service_handler amf_service_handler = {
 	.confchg_fn					= amf_confchg_fn,
 	.confchg_fn					= amf_confchg_fn,
 	.libais_init_fn				= message_handler_req_amf_init,
 	.libais_init_fn				= message_handler_req_amf_init,
 	.libais_exit_fn				= amf_exit_fn,
 	.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)
 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 ( )
 void amf_dump ( )
 {
 {
-
 	enumerate_components (amf_dump_comp, NULL);
 	enumerate_components (amf_dump_comp, NULL);
 	fflush (stdout);
 	fflush (stdout);
 
 

+ 6 - 3
exec/ckpt.c

@@ -169,7 +169,8 @@ struct service_handler ckpt_service_handler = {
 	.confchg_fn					= 0, /* ckpt service handler is not distributed */
 	.confchg_fn					= 0, /* ckpt service handler is not distributed */
 	.libais_init_fn				= message_handler_req_lib_ckpt_init,
 	.libais_init_fn				= message_handler_req_lib_ckpt_init,
 	.libais_exit_fn				= 0,
 	.libais_exit_fn				= 0,
-	.exec_init_fn				= 0
+	.exec_init_fn				= 0,
+	.exec_dump_fn				= 0
 };
 };
 
 
 struct libais_handler ckpt_checkpoint_libais_handlers[] =
 struct libais_handler ckpt_checkpoint_libais_handlers[] =
@@ -289,7 +290,8 @@ struct service_handler ckpt_checkpoint_service_handler = {
 	.confchg_fn					= ckpt_checkpoint_confchg_fn,
 	.confchg_fn					= ckpt_checkpoint_confchg_fn,
 	.libais_init_fn				= message_handler_req_lib_ckpt_checkpoint_init,
 	.libais_init_fn				= message_handler_req_lib_ckpt_checkpoint_init,
 	.libais_exit_fn				= ckpt_checkpoint_exit_fn,
 	.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[] =
 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 */
 	.confchg_fn					= 0, /* Section Iterators are not distributed */
 	.libais_init_fn				= message_handler_req_lib_ckpt_sectioniterator_init,
 	.libais_init_fn				= message_handler_req_lib_ckpt_sectioniterator_init,
 	.libais_exit_fn				= ckptSectionIteratorApiFinalize,
 	.libais_exit_fn				= ckptSectionIteratorApiFinalize,
-	.exec_init_fn				= 0
+	.exec_init_fn				= 0,
+	.exec_dump_fn				= 0
 };
 };
 
 
 static struct saCkptCheckpoint *findCheckpoint (SaNameT *name)
 static struct saCkptCheckpoint *findCheckpoint (SaNameT *name)

+ 2 - 1
exec/clm.c

@@ -169,7 +169,8 @@ struct service_handler clm_service_handler = {
 	.confchg_fn					= clm_confchg_fn,
 	.confchg_fn					= clm_confchg_fn,
 	.libais_init_fn				= message_handler_req_clm_init,
 	.libais_init_fn				= message_handler_req_clm_init,
 	.libais_exit_fn				= clm_exit_fn,
 	.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)
 static int clm_exec_init_fn (void)

+ 2 - 1
exec/evs.c

@@ -134,7 +134,8 @@ struct service_handler evs_service_handler = {
 	.confchg_fn					= evs_confchg_fn,
 	.confchg_fn					= evs_confchg_fn,
 	.libais_init_fn				= message_handler_req_evs_init,
 	.libais_init_fn				= message_handler_req_evs_init,
 	.libais_exit_fn				= evs_exit_fn,
 	.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)
 static int evs_executive_initialize (void)

+ 2 - 1
exec/evt.c

@@ -152,7 +152,8 @@ struct service_handler evt_service_handler = {
 	.confchg_fn					= evt_conf_change,
 	.confchg_fn					= evt_conf_change,
 	.libais_init_fn				= evt_initialize,
 	.libais_init_fn				= evt_initialize,
 	.libais_exit_fn				= evt_finalize,
 	.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;
 static gmi_recovery_plug_handle evt_recovery_plug_handle;

+ 1 - 0
exec/handlers.h

@@ -58,6 +58,7 @@ struct service_handler {
 	int (*libais_init_fn) (struct conn_info *conn_info, void *msg);
 	int (*libais_init_fn) (struct conn_info *conn_info, void *msg);
 	int (*libais_exit_fn) (struct conn_info *conn_info);
 	int (*libais_exit_fn) (struct conn_info *conn_info);
 	int (*exec_init_fn) (void);
 	int (*exec_init_fn) (void);
+	void (*exec_dump_fn) (void);
 };
 };
 
 
 #endif /* HANDLERS_H_DEFINED */
 #endif /* HANDLERS_H_DEFINED */

+ 10 - 1
exec/main.c

@@ -145,7 +145,13 @@ static inline struct conn_info *conn_info_create (int fd) {
 
 
 static void sigusr2_handler (int num)
 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);
 	signal (SIGUSR2 ,sigusr2_handler);
 	return;
 	return;
@@ -781,6 +787,9 @@ static void aisexec_service_handlers_init (void)
 	 */
 	 */
 	for (i = 0; i < AIS_SERVICE_HANDLERS_COUNT; i++) {
 	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) {
+			if (!ais_service_handlers[i]->exec_init_fn) {
+				continue;
+			}
 			ais_service_handlers[i]->exec_init_fn ();
 			ais_service_handlers[i]->exec_init_fn ();
 		}
 		}
 	}
 	}