#ifdef HAVE_TRACING
+XBT_LOG_NEW_DEFAULT_SUBCATEGORY(instr_paje, instr, "Paje tracing event system");
+
static FILE *tracing_file = NULL;
-int tracing_active = 0;
static int pajeDefineContainerTypeId = 0;
static int pajeDefineStateTypeId = 1;
#define TRACE_LINE_SIZE 1000
-void TRACE_paje_start(FILE * file)
+void TRACE_paje_start(void)
{
- tracing_file = file;
- tracing_active = 1;
+ char *filename = TRACE_get_filename();
+ tracing_file = fopen(filename, "w");
+ xbt_assert1 (tracing_file != NULL, "Tracefile %s could not be opened for writing.", filename);
+
+ DEBUG1("Filename %s is open for writing", filename);
+
+ /* output header */
+ TRACE_paje_create_header();
}
-FILE *TRACE_paje_end(void)
+void TRACE_paje_end(void)
{
- tracing_active = 0;
- return tracing_file;
+ fclose(tracing_file);
+ char *filename = TRACE_get_filename();
+ DEBUG1("Filename %s is closed", filename);
}
-
void TRACE_paje_create_header(void)
{
- if (!tracing_active)
- return;
+ DEBUG0 ("Define paje header");
fprintf(tracing_file, "\
%%EventDef PajeDefineContainerType %d \n\
%% Alias string \n\
const char *type, const char *container,
const char *name)
{
- snprintf(output, len, "%d %lf %s %s %s %s", eventid, time,
+ if (time == 0){
+ snprintf(output, len, "%d 0 %s %s %s %s", eventid,
+ alias, type, container, name);
+ }else{
+ snprintf(output, len, "%d %lf %s %s %s %s", eventid, time,
alias, type, container, name);
+ }
}
static void __pajeSetState(char *output, int len, int eventid, double time,
const char *entityType, const char *container,
const char *value)
{
- snprintf(output, len, "%d %lf %s %s %s", eventid, time, entityType,
+ if (time == 0){
+ snprintf(output, len, "%d 0 %s %s %s", eventid, entityType,
container, value);
+ }else{
+ snprintf(output, len, "%d %lf %s %s %s", eventid, time, entityType,
+ container, value);
+ }
}
static void __pajeSetVariable(char *output, int len, int eventid,
double time, const char *entityType,
const char *container, const char *value)
{
- snprintf(output, len, "%d %lf %s %s %s", eventid, time, entityType,
+ if (time == 0){
+ snprintf(output, len, "%d 0 %s %s %s", eventid, entityType,
+ container, value);
+ }else{
+ snprintf(output, len, "%d %lf %s %s %s", eventid, time, entityType,
container, value);
+ }
}
static void __pajeStartLink(char *output, int len, int eventid,
const char *container, const char *value,
const char *sourceContainer, const char *key)
{
- snprintf(output, len, "%d %lf %s %s %s %s %s", eventid, time, entityType,
+ if (time == 0){
+ snprintf(output, len, "%d 0 %s %s %s %s %s", eventid, entityType,
+ container, value, sourceContainer, key);
+ }else{
+ snprintf(output, len, "%d %lf %s %s %s %s %s", eventid, time, entityType,
container, value, sourceContainer, key);
+ }
}
/* internal do the instrumentation module */
void pajeDestroyContainer(double time, const char *type,
const char *container)
{
- fprintf(tracing_file, "%d %lf %s %s\n", pajeDestroyContainerId, time,
+ if (time == 0){
+ fprintf(tracing_file, "%d 0 %s %s\n", pajeDestroyContainerId,
type, container);
+ }else{
+ fprintf(tracing_file, "%d %lf %s %s\n", pajeDestroyContainerId, time,
+ type, container);
+ }
}
void pajeSetState(double time, const char *entityType,
const char *container, const char *value,
const char *destContainer, const char *key)
{
- fprintf(tracing_file, "%d %lf %s %s %s %s %s\n", pajeEndLinkId, time,
+ if (time == 0){
+ fprintf(tracing_file, "%d 0 %s %s %s %s %s\n", pajeEndLinkId,
+ entityType, container, value, destContainer, key);
+ }else {
+ fprintf(tracing_file, "%d %lf %s %s %s %s %s\n", pajeEndLinkId, time,
entityType, container, value, destContainer, key);
+ }
}
void pajeDefineVariableType(const char *alias, const char *containerType,
void pajeNewEvent(double time, const char *entityType,
const char *container, const char *value)
{
- fprintf(tracing_file, "%d %lf %s %s %s\n", pajeNewEventId, time,
+ if (time == 0){
+ fprintf(tracing_file, "%d 0 %s %s %s\n", pajeNewEventId,
+ entityType, container, value);
+ }else{
+ fprintf(tracing_file, "%d %lf %s %s %s\n", pajeNewEventId, time,
entityType, container, value);
+ }
}
-#endif
+#endif /* HAVE_TRACING */