From 8f6f26fc3ac216805fde5f359d0eded5f4c229cc Mon Sep 17 00:00:00 2001 From: schnorr Date: Mon, 20 Aug 2012 17:33:25 +0200 Subject: [PATCH] [trace] header re-organization (now with a basic version) details: you can generate a basic version of the header by passing --cfg=tracing/basic:1 when launching your simulator (considering you are using other arguments to enable the tracing) --- buildtools/Cmake/DefinePackages.cmake | 1 + src/instr/instr_paje_header.c | 257 ++++++++++++++++++++++++++ src/instr/instr_paje_trace.c | 157 +--------------- src/instr/instr_private.h | 25 ++- 4 files changed, 284 insertions(+), 156 deletions(-) create mode 100644 src/instr/instr_paje_header.c diff --git a/buildtools/Cmake/DefinePackages.cmake b/buildtools/Cmake/DefinePackages.cmake index 834000080e..a16e83ec90 100644 --- a/buildtools/Cmake/DefinePackages.cmake +++ b/buildtools/Cmake/DefinePackages.cmake @@ -356,6 +356,7 @@ set(TRACING_SRC src/instr/instr_msg_task.c src/instr/instr_paje_containers.c src/instr/instr_paje_trace.c + src/instr/instr_paje_header.c src/instr/instr_paje_types.c src/instr/instr_paje_values.c src/instr/instr_private.h diff --git a/src/instr/instr_paje_header.c b/src/instr/instr_paje_header.c new file mode 100644 index 0000000000..f7a62db2c7 --- /dev/null +++ b/src/instr/instr_paje_header.c @@ -0,0 +1,257 @@ +/* Copyright (c) 2010. The SimGrid Team. + * All rights reserved. */ + +/* This program is free software; you can redistribute it and/or modify it + * under the terms of the license (GNU LGPL) which comes with this package. */ + +#include "instr/instr_private.h" + +#ifdef HAVE_TRACING + +XBT_LOG_NEW_DEFAULT_SUBCATEGORY(instr_paje_header, instr, "Paje tracing event system (header)"); + +extern FILE *tracing_file; + +static void TRACE_header_PajeDefineContainerType (int basic) +{ + fprintf(tracing_file, "%%EventDef PajeDefineContainerType %d\n", PAJE_DefineContainerType); + fprintf(tracing_file, "%% Alias string\n"); + if (basic){ + fprintf(tracing_file, "%% ContainerType string\n"); + }else{ + fprintf(tracing_file, "%% Type string\n"); + } + fprintf(tracing_file, "%% Name string\n"); + fprintf(tracing_file, "%%EndEventDef\n"); +} + +static void TRACE_header_PajeDefineVariableType (int basic) +{ + fprintf(tracing_file, "%%EventDef PajeDefineVariableType %d\n", PAJE_DefineVariableType); + fprintf(tracing_file, "%% Alias string\n"); + if (basic){ + fprintf(tracing_file, "%% ContainerType string\n"); + }else{ + fprintf(tracing_file, "%% Type string\n"); + } + fprintf(tracing_file, "%% Name string\n"); + fprintf(tracing_file, "%% Color string\n"); + fprintf(tracing_file, "%%EndEventDef\n"); +} + +static void TRACE_header_PajeDefineStateType (int basic) +{ + fprintf(tracing_file, "%%EventDef PajeDefineStateType %d\n", PAJE_DefineStateType); + fprintf(tracing_file, "%% Alias string\n"); + if (basic){ + fprintf(tracing_file, "%% ContainerType string\n"); + }else{ + fprintf(tracing_file, "%% Type string\n"); + } + fprintf(tracing_file, "%% Name string\n"); + fprintf(tracing_file, "%%EndEventDef\n"); +} + +static void TRACE_header_PajeDefineEventType (int basic) +{ + fprintf(tracing_file, "%%EventDef PajeDefineEventType %d\n", PAJE_DefineEventType); + fprintf(tracing_file, "%% Alias string\n"); + if (basic){ + fprintf(tracing_file, "%% ContainerType string\n"); + }else{ + fprintf(tracing_file, "%% Type string\n"); + } + fprintf(tracing_file, "%% Name string\n"); + fprintf(tracing_file, "%%EndEventDef\n"); +} + +static void TRACE_header_PajeDefineLinkType (int basic) +{ + fprintf(tracing_file, "%%EventDef PajeDefineLinkType %d\n", PAJE_DefineLinkType); + fprintf(tracing_file, "%% Alias string\n"); + if (basic){ + fprintf(tracing_file, "%% ContainerType string\n"); + fprintf(tracing_file, "%% SourceContainerType string\n"); + fprintf(tracing_file, "%% DestContainerType string\n"); + }else{ + fprintf(tracing_file, "%% Type string\n"); + fprintf(tracing_file, "%% StartContainerType string\n"); + fprintf(tracing_file, "%% EndContainerType string\n"); + } + fprintf(tracing_file, "%% Name string\n"); + fprintf(tracing_file, "%%EndEventDef\n"); +} + +static void TRACE_header_PajeDefineEntityValue (int basic) +{ + fprintf(tracing_file, "%%EventDef PajeDefineEntityValue %d\n", PAJE_DefineEntityValue); + fprintf(tracing_file, "%% Alias string\n"); + if (basic){ + fprintf(tracing_file, "%% EntityType string\n"); + }else{ + fprintf(tracing_file, "%% Type string\n"); + } + fprintf(tracing_file, "%% Name string\n"); + fprintf(tracing_file, "%% Color string\n"); + fprintf(tracing_file, "%%EndEventDef\n"); +} + +static void TRACE_header_PajeCreateContainer (int basic) +{ + fprintf(tracing_file, "%%EventDef PajeCreateContainer %d\n", PAJE_CreateContainer); + fprintf(tracing_file, "%% Time date\n"); + fprintf(tracing_file, "%% Alias string\n"); + fprintf(tracing_file, "%% Type string\n"); + fprintf(tracing_file, "%% Container string\n"); + fprintf(tracing_file, "%% Name string\n"); + fprintf(tracing_file, "%%EndEventDef\n"); +} + +static void TRACE_header_PajeDestroyContainer (int basic) +{ + fprintf(tracing_file, "%%EventDef PajeDestroyContainer %d\n", PAJE_DestroyContainer); + fprintf(tracing_file, "%% Time date\n"); + fprintf(tracing_file, "%% Type string\n"); + fprintf(tracing_file, "%% Name string\n"); + fprintf(tracing_file, "%%EndEventDef\n"); +} + +static void TRACE_header_PajeSetVariable (int basic) +{ + fprintf(tracing_file, "%%EventDef PajeSetVariable %d\n", PAJE_SetVariable); + fprintf(tracing_file, "%% Time date\n"); + fprintf(tracing_file, "%% Type string\n"); + fprintf(tracing_file, "%% Container string\n"); + fprintf(tracing_file, "%% Value double\n"); + fprintf(tracing_file, "%%EndEventDef\n"); +} + +static void TRACE_header_PajeAddVariable (int basic) +{ + fprintf(tracing_file, "%%EventDef PajeAddVariable %d\n", PAJE_AddVariable); + fprintf(tracing_file, "%% Time date\n"); + fprintf(tracing_file, "%% Type string\n"); + fprintf(tracing_file, "%% Container string\n"); + fprintf(tracing_file, "%% Value double\n"); + fprintf(tracing_file, "%%EndEventDef\n"); +} + +static void TRACE_header_PajeSubVariable (int basic) +{ + fprintf(tracing_file, "%%EventDef PajeSubVariable %d\n", PAJE_SubVariable); + fprintf(tracing_file, "%% Time date\n"); + fprintf(tracing_file, "%% Type string\n"); + fprintf(tracing_file, "%% Container string\n"); + fprintf(tracing_file, "%% Value double\n"); + fprintf(tracing_file, "%%EndEventDef\n"); +} + + +static void TRACE_header_PajeSetState (int basic) +{ + fprintf(tracing_file, "%%EventDef PajeSetState %d\n", PAJE_SetState); + fprintf(tracing_file, "%% Time date\n"); + fprintf(tracing_file, "%% Type string\n"); + fprintf(tracing_file, "%% Container string\n"); + fprintf(tracing_file, "%% Value string\n"); + fprintf(tracing_file, "%%EndEventDef\n"); +} + +static void TRACE_header_PajePushState (int basic) +{ + fprintf(tracing_file, "%%EventDef PajePushState %d\n", PAJE_PushState); + fprintf(tracing_file, "%% Time date\n"); + fprintf(tracing_file, "%% Type string\n"); + fprintf(tracing_file, "%% Container string\n"); + fprintf(tracing_file, "%% Value string\n"); + fprintf(tracing_file, "%%EndEventDef\n"); +} + +static void TRACE_header_PajePopState (int basic) +{ + fprintf(tracing_file, "%%EventDef PajePopState %d\n", PAJE_PopState); + fprintf(tracing_file, "%% Time date\n"); + fprintf(tracing_file, "%% Type string\n"); + fprintf(tracing_file, "%% Container string\n"); + fprintf(tracing_file, "%%EndEventDef\n"); +} + +static void TRACE_header_PajeResetState (int basic) +{ + if (basic) return; + + fprintf(tracing_file, "%%EventDef PajeResetState %d\n", PAJE_ResetState); + fprintf(tracing_file, "%% Time date\n"); + fprintf(tracing_file, "%% Type string\n"); + fprintf(tracing_file, "%% Container string\n"); + fprintf(tracing_file, "%%EndEventDef\n"); +} + +static void TRACE_header_PajeStartLink (int basic) +{ + fprintf(tracing_file, "%%EventDef PajeStartLink %d\n", PAJE_StartLink); + fprintf(tracing_file, "%% Time date\n"); + fprintf(tracing_file, "%% Type string\n"); + fprintf(tracing_file, "%% Container string\n"); + fprintf(tracing_file, "%% Value string\n"); + if (basic){ + fprintf(tracing_file, "%% SourceContainer string\n"); + }else{ + fprintf(tracing_file, "%% StartContainer string\n"); + } + fprintf(tracing_file, "%% Key string\n"); + fprintf(tracing_file, "%%EndEventDef\n"); +} + +static void TRACE_header_PajeEndLink (int basic) +{ + fprintf(tracing_file, "%%EventDef PajeEndLink %d\n", PAJE_EndLink); + fprintf(tracing_file, "%% Time date\n"); + fprintf(tracing_file, "%% Type string\n"); + fprintf(tracing_file, "%% Container string\n"); + fprintf(tracing_file, "%% Value string\n"); + if (basic){ + fprintf(tracing_file, "%% DestContainer string\n"); + }else{ + fprintf(tracing_file, "%% EndContainer string\n"); + } + fprintf(tracing_file, "%% Key string\n"); + fprintf(tracing_file, "%%EndEventDef\n"); +} + +static void TRACE_header_PajeNewEvent (int basic) +{ + fprintf(tracing_file, "%%EventDef PajeNewEvent %d\n", PAJE_NewEvent); + fprintf(tracing_file, "%% Time date\n"); + fprintf(tracing_file, "%% Type string\n"); + fprintf(tracing_file, "%% Container string\n"); + fprintf(tracing_file, "%% Value string\n"); + fprintf(tracing_file, "%%EndEventDef\n"); +} + +void TRACE_header(int basic) +{ + XBT_DEBUG ("Define paje header"); + TRACE_header_PajeDefineContainerType (basic); + TRACE_header_PajeDefineVariableType (basic); + TRACE_header_PajeDefineStateType (basic); + TRACE_header_PajeDefineEventType (basic); + TRACE_header_PajeDefineLinkType (basic); + TRACE_header_PajeDefineEntityValue (basic); + TRACE_header_PajeCreateContainer (basic); + TRACE_header_PajeDestroyContainer (basic); + TRACE_header_PajeSetVariable (basic); + TRACE_header_PajeAddVariable (basic); + TRACE_header_PajeSubVariable (basic); + TRACE_header_PajeSetState (basic); + TRACE_header_PajePushState (basic); + TRACE_header_PajePopState (basic); + TRACE_header_PajeResetState (basic); + TRACE_header_PajeStartLink (basic); + TRACE_header_PajeEndLink (basic); + TRACE_header_PajeNewEvent (basic); +} + +#endif + + diff --git a/src/instr/instr_paje_trace.c b/src/instr/instr_paje_trace.c index 0e0af37434..89584d436b 100644 --- a/src/instr/instr_paje_trace.c +++ b/src/instr/instr_paje_trace.c @@ -10,27 +10,6 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(instr_paje_trace, instr, "Paje tracing event system"); -typedef enum { - PAJE_DefineContainerType, - PAJE_DefineVariableType, - PAJE_DefineStateType, - PAJE_DefineEventType, - PAJE_DefineLinkType, - PAJE_DefineEntityValue, - PAJE_CreateContainer, - PAJE_DestroyContainer, - PAJE_SetVariable, - PAJE_AddVariable, - PAJE_SubVariable, - PAJE_SetState, - PAJE_PushState, - PAJE_PopState, - PAJE_ResetState, - PAJE_StartLink, - PAJE_EndLink, - PAJE_NewEvent -} e_event_type; - typedef struct paje_event *paje_event_t; typedef struct paje_event { double timestamp; @@ -154,7 +133,7 @@ typedef struct s_newEvent { val_t value; }s_newEvent_t; -static FILE *tracing_file = NULL; +FILE *tracing_file = NULL; static xbt_dynar_t buffer = NULL; @@ -169,7 +148,7 @@ void TRACE_paje_start(void) XBT_DEBUG("Filename %s is open for writing", filename); /* output header */ - TRACE_paje_create_header(); + TRACE_header(TRACE_basic()); buffer = xbt_dynar_new (sizeof(paje_event_t), NULL); } @@ -212,138 +191,6 @@ void TRACE_paje_dump_buffer (int force) XBT_DEBUG("%s: ends", __FUNCTION__); } -void TRACE_paje_create_header(void) -{ - XBT_DEBUG ("Define paje header"); - fprintf(tracing_file, "\ -%%EventDef PajeDefineContainerType %d \n\ -%% Alias string \n\ -%% Type string \n\ -%% Name string \n\ -%%EndEventDef \n\ -%%EventDef PajeDefineVariableType %d \n\ -%% Alias string \n\ -%% Type string \n\ -%% Name string \n\ -%% Color color \n\ -%%EndEventDef \n\ -%%EventDef PajeDefineStateType %d \n\ -%% Alias string \n\ -%% Type string \n\ -%% Name string \n\ -%%EndEventDef \n\ -%%EventDef PajeDefineEventType %d \n\ -%% Alias string \n\ -%% Type string \n\ -%% Name string \n\ -%%EndEventDef \n\ -%%EventDef PajeDefineLinkType %d \n\ -%% Alias string \n\ -%% Type string \n\ -%% StartContainerType string \n\ -%% EndContainerType string \n\ -%% Name string \n\ -%%EndEventDef \n\ -%%EventDef PajeDefineEntityValue %d \n\ -%% Alias string \n\ -%% Type string \n\ -%% Name string \n\ -%% Color color \n\ -%%EndEventDef \n\ -%%EventDef PajeCreateContainer %d \n\ -%% Time date \n\ -%% Alias string \n\ -%% Type string \n\ -%% Container string \n\ -%% Name string \n\ -%%EndEventDef \n\ -%%EventDef PajeDestroyContainer %d \n\ -%% Time date \n\ -%% Type string \n\ -%% Name string \n\ -%%EndEventDef \n\ -%%EventDef PajeSetVariable %d \n\ -%% Time date \n\ -%% Type string \n\ -%% Container string \n\ -%% Value double \n\ -%%EndEventDef\n\ -%%EventDef PajeAddVariable %d \n\ -%% Time date \n\ -%% Type string \n\ -%% Container string \n\ -%% Value double \n\ -%%EndEventDef\n\ -%%EventDef PajeSubVariable %d \n\ -%% Time date \n\ -%% Type string \n\ -%% Container string \n\ -%% Value double \n\ -%%EndEventDef\n\ -%%EventDef PajeSetState %d \n\ -%% Time date \n\ -%% Type string \n\ -%% Container string \n\ -%% Value string \n\ -%%EndEventDef\n\ -%%EventDef PajePushState %d \n\ -%% Time date \n\ -%% Type string \n\ -%% Container string \n\ -%% Value string \n\ -%%EndEventDef\n\ -%%EventDef PajePopState %d \n\ -%% Time date \n\ -%% Type string \n\ -%% Container string \n\ -%%EndEventDef\n\ -%%EventDef PajeResetState %d \n\ -%% Time date \n\ -%% Type string \n\ -%% Container string \n\ -%%EndEventDef\n\ -%%EventDef PajeStartLink %d \n\ -%% Time date \n\ -%% Type string \n\ -%% Container string \n\ -%% Value string \n\ -%% StartContainer string \n\ -%% Key string \n\ -%%EndEventDef\n\ -%%EventDef PajeEndLink %d \n\ -%% Time date \n\ -%% Type string \n\ -%% Container string \n\ -%% Value string \n\ -%% EndContainer string \n\ -%% Key string \n\ -%%EndEventDef\n\ -%%EventDef PajeNewEvent %d \n\ -%% Time date \n\ -%% Type string \n\ -%% Container string \n\ -%% Value string \n\ -%%EndEventDef\n", - PAJE_DefineContainerType, - PAJE_DefineVariableType, - PAJE_DefineStateType, - PAJE_DefineEventType, - PAJE_DefineLinkType, - PAJE_DefineEntityValue, - PAJE_CreateContainer, - PAJE_DestroyContainer, - PAJE_SetVariable, - PAJE_AddVariable, - PAJE_SubVariable, - PAJE_SetState, - PAJE_PushState, - PAJE_PopState, - PAJE_ResetState, - PAJE_StartLink, - PAJE_EndLink, - PAJE_NewEvent); -} - /* internal do the instrumentation module */ static void insert_into_buffer (paje_event_t tbi) { diff --git a/src/instr/instr_private.h b/src/instr/instr_private.h index f3df1b269c..58b447546d 100644 --- a/src/instr/instr_private.h +++ b/src/instr/instr_private.h @@ -24,6 +24,27 @@ #include "simix/smx_private.h" #include "xbt/graph_private.h" +typedef enum { + PAJE_DefineContainerType, + PAJE_DefineVariableType, + PAJE_DefineStateType, + PAJE_DefineEventType, + PAJE_DefineLinkType, + PAJE_DefineEntityValue, + PAJE_CreateContainer, + PAJE_DestroyContainer, + PAJE_SetVariable, + PAJE_AddVariable, + PAJE_SubVariable, + PAJE_SetState, + PAJE_PushState, + PAJE_PopState, + PAJE_ResetState, + PAJE_StartLink, + PAJE_EndLink, + PAJE_NewEvent +} e_event_type; + typedef enum { TYPE_VARIABLE, TYPE_LINK, @@ -79,8 +100,10 @@ extern xbt_dict_t user_host_variables; extern xbt_dict_t user_link_variables; extern double TRACE_last_timestamp_to_dump; +/* instr_paje_header.c */ +void TRACE_header(int basic); + /* from paje.c */ -void TRACE_paje_create_header(void); void TRACE_paje_start(void); void TRACE_paje_end(void); void TRACE_paje_dump_buffer (int force); -- 2.20.1