X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/ae855a0d996d06d373fbc233e78b0fbe7f1f2df6..84a97ed228d9c1b703dfd0f5898c4d1ef8f4bc17:/src/instr/instr_interface.c diff --git a/src/instr/instr_interface.c b/src/instr/instr_interface.c index fbf8457d78..d1ac6009c1 100644 --- a/src/instr/instr_interface.c +++ b/src/instr/instr_interface.c @@ -17,38 +17,22 @@ static xbt_dict_t created_categories; int TRACE_start() { - if (!TRACE_is_configured()) { - THROW0(tracing_error, TRACE_ERROR_START, - "TRACE_start should be called after SimGrid initialization functions."); + // tracing system must be: + // - enabled (with --cfg=tracing:1) + // - already configured (TRACE_global_init already called) + if (!(TRACE_is_enabled() && TRACE_is_configured())){ return 0; } - if (!TRACE_is_enabled()){ - return 0; - } + /* open the trace file */ + TRACE_paje_start(); - if (IS_TRACING) { /* what? trace is already active... ignore.. */ - THROW0(tracing_error, TRACE_ERROR_START, - "TRACE_start called, but tracing is already active."); - return 0; - } + /* activate trace */ + TRACE_activate (); - char *filename = TRACE_get_filename(); - if (!filename) { - THROW0(tracing_error, TRACE_ERROR_START, - "Trace filename is not initialized."); - return 0; - } - FILE *file = fopen(filename, "w"); - if (!file) { - THROW1(tracing_error, TRACE_ERROR_START, - "Tracefile %s could not be opened for writing.", filename); - } else { - TRACE_paje_start(file); - } - TRACE_paje_create_header(); - - /* define paje hierarchy for tracing */ + /* base type hierarchy: + * --cfg=tracing + */ pajeDefineContainerType("PLATFORM", "0", "platform"); pajeDefineContainerType("HOST", "PLATFORM", "HOST"); pajeDefineContainerType("LINK", "PLATFORM", "LINK"); @@ -58,35 +42,49 @@ int TRACE_start() pajeDefineEventType("source", "LINK", "source"); pajeDefineEventType("destination", "LINK", "destination"); - if (IS_TRACING_PLATFORM) { + /* type hierarchy for: + * --cfg=tracing/uncategorized + */ + if (TRACE_platform_is_enabled()) { if (TRACE_uncategorized()){ pajeDefineVariableType("power_used", "HOST", "power_used"); pajeDefineVariableType("bandwidth_used", "LINK", "bandwidth_used"); } } - if (IS_TRACING_PROCESSES || IS_TRACING_VOLUME) { + /* type hierarchy for: + * --cfg=tracing/msg/process + * --cfg=tracing/msg/volume + */ + if (TRACE_msg_process_is_enabled() || TRACE_msg_volume_is_enabled()) { //processes grouped by host pajeDefineContainerType("PROCESS", "HOST", "PROCESS"); } - if (IS_TRACING_PROCESSES) { + if (TRACE_msg_process_is_enabled()) { pajeDefineStateType("category", "PROCESS", "category"); pajeDefineStateType("presence", "PROCESS", "presence"); } - if (IS_TRACING_VOLUME) { + if (TRACE_msg_volume_is_enabled()) { pajeDefineLinkType("volume", "0", "PROCESS", "PROCESS", "volume"); } - if (IS_TRACING_TASKS) { + /* type hierarchy for: + * --cfg=tracing/msg/task + */ + if (TRACE_msg_task_is_enabled()) { //tasks grouped by host pajeDefineContainerType("TASK", "HOST", "TASK"); pajeDefineStateType("category", "TASK", "category"); pajeDefineStateType("presence", "TASK", "presence"); } - if (IS_TRACING_SMPI) { + /* type hierarchy for + * --cfg=tracing/smpi + * --cfg=tracing/smpi/group + */ + if (TRACE_smpi_is_enabled()) { if (TRACE_smpi_is_grouped()){ pajeDefineContainerType("MPI_PROCESS", "HOST", "MPI_PROCESS"); }else{ @@ -109,17 +107,19 @@ int TRACE_start() TRACE_surf_alloc(); TRACE_msg_process_alloc(); TRACE_smpi_alloc(); - return 0; } int TRACE_end() { - FILE *file = NULL; - if (!IS_TRACING) + if (!TRACE_is_active()) return 1; - file = TRACE_paje_end(); - fclose(file); + + /* close the trace file */ + TRACE_paje_end(); + + /* activate trace */ + TRACE_desactivate (); return 0; } @@ -131,7 +131,7 @@ int TRACE_category(const char *category) int TRACE_category_with_color (const char *category, const char *color) { static int first_time = 1; - if (!IS_TRACING) + if (!TRACE_is_active()) return 1; if (first_time) { @@ -145,7 +145,7 @@ void TRACE_define_type(const char *type, const char *parent_type, int final) { char *val_one = NULL; - if (!IS_TRACING) + if (!TRACE_is_active()) return; //check if type is already defined @@ -163,14 +163,14 @@ void TRACE_define_type(const char *type, pajeDefineContainerType(type, parent_type, type); if (final) { //for m_process_t - if (IS_TRACING_PROCESSES) + if (TRACE_msg_process_is_enabled()) pajeDefineContainerType("process", type, "process"); - if (IS_TRACING_PROCESSES) + if (TRACE_msg_process_is_enabled()) pajeDefineStateType("process-state", "process", "process-state"); - if (IS_TRACING_TASKS) + if (TRACE_msg_task_is_enabled()) pajeDefineContainerType("task", type, "task"); - if (IS_TRACING_TASKS) + if (TRACE_msg_task_is_enabled()) pajeDefineStateType("task-state", "task", "task-state"); } val_one = xbt_strdup("1"); @@ -190,7 +190,7 @@ int TRACE_create_category_with_color(const char *category, { char state[100]; char *val_one = NULL; - if (!IS_TRACING) + if (!TRACE_is_active()) return 1; //check if type is defined @@ -227,10 +227,10 @@ int TRACE_create_category_with_color(const char *category, /* for registering application categories on top of platform */ snprintf(state, 100, "b%s", category); - if (IS_TRACING_PLATFORM) + if (TRACE_platform_is_enabled()) pajeDefineVariableTypeWithColor(state, "LINK", state, final_color); snprintf(state, 100, "p%s", category); - if (IS_TRACING_PLATFORM) + if (TRACE_platform_is_enabled()) pajeDefineVariableTypeWithColor(state, "HOST", state, final_color); val_one = xbt_strdup("1"); @@ -240,7 +240,7 @@ int TRACE_create_category_with_color(const char *category, void TRACE_declare_mark(const char *mark_type) { - if (!IS_TRACING) + if (!TRACE_is_active()) return; if (!mark_type) return; @@ -250,7 +250,7 @@ void TRACE_declare_mark(const char *mark_type) void TRACE_mark(const char *mark_type, const char *mark_value) { - if (!IS_TRACING) + if (!TRACE_is_active()) return; if (!mark_type || !mark_value) return; @@ -258,4 +258,4 @@ void TRACE_mark(const char *mark_type, const char *mark_value) pajeNewEvent(MSG_get_clock(), mark_type, "0", mark_value); } -#endif /* HAVE_TRACING */ +#endif /* HAVE_TRACING */