1 /* Copyright (c) 2010. The SimGrid Team.
2 * All rights reserved. */
4 /* This program is free software; you can redistribute it and/or modify it
5 * under the terms of the license (GNU LGPL) which comes with this package. */
7 #include "instr/instr_private.h"
11 #define INSTR_PAJE_ASSERT(str) {xbt_assert1(str!=NULL&&strlen(str)>0, "'%s' is NULL or length is zero", #str);}
13 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(instr_paje_trace, instr, "Paje tracing event system");
16 PAJE_DefineContainerType,
17 PAJE_DefineVariableType,
22 PAJE_DestroyContainer,
34 typedef struct paje_event *paje_event_t;
35 typedef struct paje_event {
38 e_event_type event_type;
39 void (*print) (paje_event_t event);
43 typedef struct s_defineContainerType *defineContainerType_t;
44 typedef struct s_defineContainerType {
46 }s_defineContainerType_t;
48 typedef struct s_defineVariableType *defineVariableType_t;
49 typedef struct s_defineVariableType {
51 }s_defineVariableType_t;
53 typedef struct s_defineStateType *defineStateType_t;
54 typedef struct s_defineStateType {
58 typedef struct s_defineEventType *defineEventType_t;
59 typedef struct s_defineEventType {
63 typedef struct s_defineLinkType *defineLinkType_t;
64 typedef struct s_defineLinkType {
70 typedef struct s_createContainer *createContainer_t;
71 typedef struct s_createContainer {
72 container_t container;
75 typedef struct s_destroyContainer *destroyContainer_t;
76 typedef struct s_destroyContainer {
77 container_t container;
78 }s_destroyContainer_t;
80 typedef struct s_setVariable *setVariable_t;
81 typedef struct s_setVariable {
82 container_t container;
87 typedef struct s_addVariable *addVariable_t;
88 typedef struct s_addVariable {
89 container_t container;
94 typedef struct s_subVariable *subVariable_t;
95 typedef struct s_subVariable {
96 container_t container;
101 typedef struct s_setState *setState_t;
102 typedef struct s_setState {
103 container_t container;
108 typedef struct s_pushState *pushState_t;
109 typedef struct s_pushState {
110 container_t container;
115 typedef struct s_popState *popState_t;
116 typedef struct s_popState {
117 container_t container;
122 typedef struct s_startLink *startLink_t;
123 typedef struct s_startLink {
125 container_t container;
126 container_t sourceContainer;
131 typedef struct s_endLink *endLink_t;
132 typedef struct s_endLink {
134 container_t container;
135 container_t destContainer;
140 typedef struct s_newEvent *newEvent_t;
141 typedef struct s_newEvent {
143 container_t container;
147 static FILE *tracing_file = NULL;
149 static int pajeDefineContainerTypeId = 0;
150 static int pajeDefineStateTypeId = 1;
151 static int pajeDefineEntityValueId = 2;
152 static int pajeDefineEventTypeId = 3;
153 static int pajeDefineLinkTypeId = 4;
154 static int pajeCreateContainerId = 5;
155 static int pajeSetStateId = 6;
157 static int pajePopStateId = 8;
158 static int pajeDestroyContainerId = 9;
161 static int pajeStartLinkId = 12;
162 static int pajeEndLinkId = 13;
168 static int pajePushStateId = 19;
169 static int pajeDefineEventTypeWithColorId = 20;
170 static int pajeDefineVariableTypeWithColorId = 21;
171 static int pajeSetVariableId = 22;
172 static int pajeAddVariableId = 23;
173 static int pajeSubVariableId = 24;
174 static int pajeDefineVariableTypeId = 25;
176 static int pajeNewEventId = 27;
178 #define TRACE_LINE_SIZE 1000
180 void TRACE_paje_start(void)
182 char *filename = TRACE_get_filename();
183 tracing_file = fopen(filename, "w");
184 xbt_assert1 (tracing_file != NULL, "Tracefile %s could not be opened for writing.", filename);
186 DEBUG1("Filename %s is open for writing", filename);
189 TRACE_paje_create_header();
192 void TRACE_paje_end(void)
194 fclose(tracing_file);
195 char *filename = TRACE_get_filename();
196 DEBUG1("Filename %s is closed", filename);
199 void TRACE_paje_create_header(void)
201 DEBUG0 ("Define paje header");
202 fprintf(tracing_file, "\
203 %%EventDef PajeDefineContainerType %d \n\
205 %% ContainerType string \n\
208 %%EventDef PajeDefineStateType %d \n\
210 %% ContainerType string \n\
213 %%EventDef PajeDefineEntityValue %d \n\
215 %% EntityType string \n\
218 %%EventDef PajeDefineEventType %d \n\
220 %% EntityType string \n\
224 %%EventDef PajeDefineEventType %d \n\
226 %% EntityType string \n\
229 %%EventDef PajeDefineLinkType %d \n\
231 %% ContainerType string \n\
232 %% SourceContainerType string \n\
233 %% DestContainerType string \n\
236 %%EventDef PajeCreateContainer %d \n\
240 %% Container string \n\
243 %%EventDef PajeDestroyContainer %d \n\
246 %% Container string \n\
248 %%EventDef PajeSetState %d \n\
250 %% EntityType string \n\
251 %% Container string \n\
254 %%EventDef PajePopState %d \n\
256 %% EntityType string \n\
257 %% Container string \n\
259 %%EventDef PajeStartLink %d \n\
261 %% EntityType string \n\
262 %% Container string \n\
264 %% SourceContainer string \n\
267 %%EventDef PajeEndLink %d \n\
269 %% EntityType string \n\
270 %% Container string \n\
272 %% DestContainer string \n\
275 %%EventDef PajePushState %d \n\
277 %% EntityType string \n\
278 %% Container string \n\
281 %%EventDef PajeSetVariable %d \n\
283 %% EntityType string \n\
284 %% Container string \n\
287 %%EventDef PajeAddVariable %d \n\
289 %% EntityType string \n\
290 %% Container string \n\
293 %%EventDef PajeSubVariable %d \n\
295 %% EntityType string \n\
296 %% Container string \n\
299 %%EventDef PajeDefineVariableType %d \n\
301 %% ContainerType string \n\
304 %%EventDef PajeDefineVariableType %d \n\
306 %% ContainerType string \n\
310 %%EventDef PajeNewEvent %d \n\
312 %% EntityType string \n\
313 %% Container string \n\
315 %%EndEventDef\n", pajeDefineContainerTypeId, pajeDefineStateTypeId, pajeDefineEntityValueId, pajeDefineEventTypeWithColorId, pajeDefineEventTypeId, pajeDefineLinkTypeId, pajeCreateContainerId, pajeDestroyContainerId, pajeSetStateId, pajePopStateId, pajeStartLinkId, pajeEndLinkId, pajePushStateId, pajeSetVariableId, pajeAddVariableId, pajeSubVariableId, pajeDefineVariableTypeId, pajeDefineVariableTypeWithColorId, pajeNewEventId);
318 /* internal do the instrumentation module */
319 static void print_pajeDefineContainerType(paje_event_t event)
321 fprintf(tracing_file, "%d %s %s %s\n",
323 ((defineContainerType_t)event->data)->type->id,
324 ((defineContainerType_t)event->data)->type->father->id,
325 ((defineContainerType_t)event->data)->type->name);
328 static void print_pajeDefineVariableType(paje_event_t event)
330 fprintf(tracing_file, "%d %s %s %s \"%s\"\n",
332 ((defineVariableType_t)event->data)->type->id,
333 ((defineVariableType_t)event->data)->type->father->id,
334 ((defineVariableType_t)event->data)->type->name,
335 ((defineVariableType_t)event->data)->type->color);
338 static void print_pajeDefineStateType(paje_event_t event)
340 fprintf(tracing_file, "%d %s %s %s\n",
342 ((defineStateType_t)event->data)->type->id,
343 ((defineStateType_t)event->data)->type->father->id,
344 ((defineStateType_t)event->data)->type->name);
347 static void print_pajeDefineEventType(paje_event_t event)
349 fprintf(tracing_file, "%d %s %s %s \"%s\"\n",
351 ((defineEventType_t)event->data)->type->id,
352 ((defineEventType_t)event->data)->type->father->id,
353 ((defineEventType_t)event->data)->type->name,
354 ((defineEventType_t)event->data)->type->color);
357 static void print_pajeDefineLinkType(paje_event_t event)
359 fprintf(tracing_file, "%d %s %s %s %s %s\n",
361 ((defineLinkType_t)event->data)->type->id,
362 ((defineLinkType_t)event->data)->type->father->id,
363 ((defineLinkType_t)event->data)->source->id,
364 ((defineLinkType_t)event->data)->dest->id,
365 ((defineLinkType_t)event->data)->type->name);
368 static void print_pajeCreateContainer(paje_event_t event)
370 if (event->timestamp == 0){
371 fprintf(tracing_file, "%d 0 %s %s %s %s\n",
373 ((createContainer_t)event->data)->container->id,
374 ((createContainer_t)event->data)->container->type->id,
375 ((createContainer_t)event->data)->container->father->id,
376 ((createContainer_t)event->data)->container->name);
378 fprintf(tracing_file, "%d %lf %s %s %s %s\n",
381 ((createContainer_t)event->data)->container->id,
382 ((createContainer_t)event->data)->container->type->id,
383 ((createContainer_t)event->data)->container->father->id,
384 ((createContainer_t)event->data)->container->name);
388 static void print_pajeDestroyContainer(paje_event_t event)
390 if (event->timestamp == 0){
391 fprintf(tracing_file, "%d 0 %s %s\n",
393 ((destroyContainer_t)event->data)->container->type->id,
394 ((destroyContainer_t)event->data)->container->id);
396 fprintf(tracing_file, "%d %lf %s %s\n",
399 ((destroyContainer_t)event->data)->container->type->id,
400 ((destroyContainer_t)event->data)->container->id);
404 static void print_pajeSetVariable(paje_event_t event)
406 if (event->timestamp == 0){
407 fprintf(tracing_file, "%d 0 %s %s %f\n",
409 ((setVariable_t)event->data)->type->id,
410 ((setVariable_t)event->data)->container->id,
411 ((setVariable_t)event->data)->value);
413 fprintf(tracing_file, "%d %lf %s %s %f\n",
416 ((setVariable_t)event->data)->type->id,
417 ((setVariable_t)event->data)->container->id,
418 ((setVariable_t)event->data)->value);
422 static void print_pajeAddVariable(paje_event_t event)
424 if (event->timestamp == 0){
425 fprintf(tracing_file, "%d 0 %s %s %f\n",
427 ((addVariable_t)event->data)->type->id,
428 ((addVariable_t)event->data)->container->id,
429 ((addVariable_t)event->data)->value);
431 fprintf(tracing_file, "%d %lf %s %s %f\n",
434 ((addVariable_t)event->data)->type->id,
435 ((addVariable_t)event->data)->container->id,
436 ((addVariable_t)event->data)->value);
440 static void print_pajeSubVariable(paje_event_t event)
442 if (event->timestamp == 0){
443 fprintf(tracing_file, "%d 0 %s %s %f\n",
445 ((subVariable_t)event->data)->type->id,
446 ((subVariable_t)event->data)->container->id,
447 ((subVariable_t)event->data)->value);
449 fprintf(tracing_file, "%d %lf %s %s %f\n",
452 ((subVariable_t)event->data)->type->id,
453 ((subVariable_t)event->data)->container->id,
454 ((subVariable_t)event->data)->value);
458 static void print_pajeSetState(paje_event_t event)
460 if (event->timestamp == 0){
461 fprintf(tracing_file, "%d 0 %s %s %s\n",
463 ((setState_t)event->data)->type->id,
464 ((setState_t)event->data)->container->id,
465 ((setState_t)event->data)->value);
467 fprintf(tracing_file, "%d %lf %s %s %s\n",
470 ((setState_t)event->data)->type->id,
471 ((setState_t)event->data)->container->id,
472 ((setState_t)event->data)->value);
476 static void print_pajePushState(paje_event_t event)
478 if (event->timestamp == 0){
479 fprintf(tracing_file, "%d 0 %s %s %s\n",
481 ((pushState_t)event->data)->type->id,
482 ((pushState_t)event->data)->container->id,
483 ((pushState_t)event->data)->value);
485 fprintf(tracing_file, "%d %lf %s %s %s\n",
488 ((pushState_t)event->data)->type->id,
489 ((pushState_t)event->data)->container->id,
490 ((pushState_t)event->data)->value);
494 static void print_pajePopState(paje_event_t event)
496 if (event->timestamp == 0){
497 fprintf(tracing_file, "%d 0 %s %s\n",
499 ((popState_t)event->data)->type->id,
500 ((popState_t)event->data)->container->id);
502 fprintf(tracing_file, "%d %lf %s %s\n",
505 ((popState_t)event->data)->type->id,
506 ((popState_t)event->data)->container->id);
510 static void print_pajeStartLink(paje_event_t event)
512 if (event->timestamp == 0){
513 fprintf(tracing_file, "%d 0 %s %s %s %s %s\n",
515 ((startLink_t)event->data)->type->id,
516 ((startLink_t)event->data)->container->id,
517 ((startLink_t)event->data)->value,
518 ((startLink_t)event->data)->sourceContainer->id,
519 ((startLink_t)event->data)->key);
521 fprintf(tracing_file, "%d %lf %s %s %s %s %s\n",
524 ((startLink_t)event->data)->type->id,
525 ((startLink_t)event->data)->container->id,
526 ((startLink_t)event->data)->value,
527 ((startLink_t)event->data)->sourceContainer->id,
528 ((startLink_t)event->data)->key);
532 static void print_pajeEndLink(paje_event_t event)
534 if (event->timestamp == 0){
535 fprintf(tracing_file, "%d 0 %s %s %s %s %s\n",
537 ((endLink_t)event->data)->type->id,
538 ((endLink_t)event->data)->container->id,
539 ((endLink_t)event->data)->value,
540 ((endLink_t)event->data)->destContainer->id,
541 ((endLink_t)event->data)->key);
543 fprintf(tracing_file, "%d %lf %s %s %s %s %s\n",
546 ((endLink_t)event->data)->type->id,
547 ((endLink_t)event->data)->container->id,
548 ((endLink_t)event->data)->value,
549 ((endLink_t)event->data)->destContainer->id,
550 ((endLink_t)event->data)->key);
554 static void print_pajeNewEvent (paje_event_t event)
556 if (event->timestamp == 0){
557 fprintf(tracing_file, "%d 0 %s %s %s\n",
559 ((newEvent_t)event->data)->type->id,
560 ((newEvent_t)event->data)->container->id,
561 ((newEvent_t)event->data)->value);
563 fprintf(tracing_file, "%d %lf %s %s %s\n",
566 ((newEvent_t)event->data)->type->id,
567 ((newEvent_t)event->data)->container->id,
568 ((newEvent_t)event->data)->value);
572 void new_pajeDefineContainerType(type_t type)
574 paje_event_t event = xbt_new0(s_paje_event_t, 1);
575 event->event_type = PAJE_DefineContainerType;
576 event->id = pajeDefineContainerTypeId;
577 event->timestamp = 0;
578 event->print = print_pajeDefineContainerType;
579 event->data = xbt_new0(s_defineContainerType_t, 1);
580 ((defineContainerType_t)(event->data))->type = type;
583 event->print (event);
586 xbt_free (event->data);
591 void new_pajeDefineVariableType(type_t type)
593 paje_event_t event = xbt_new0(s_paje_event_t, 1);
594 event->event_type = PAJE_DefineVariableType;
595 event->id = pajeDefineVariableTypeWithColorId;
596 event->timestamp = 0;
597 event->print = print_pajeDefineVariableType;
598 event->data = xbt_new0(s_defineVariableType_t, 1);
599 ((defineVariableType_t)(event->data))->type = type;
602 event->print (event);
605 xbt_free (event->data);
610 void new_pajeDefineStateType(type_t type)
612 paje_event_t event = xbt_new0(s_paje_event_t, 1);
613 event->event_type = PAJE_DefineStateType;
614 event->id = pajeDefineStateTypeId;
615 event->timestamp = 0;
616 event->print = print_pajeDefineStateType;
617 event->data = xbt_new0(s_defineStateType_t, 1);
618 ((defineStateType_t)(event->data))->type = type;
621 event->print (event);
624 xbt_free (event->data);
629 void new_pajeDefineEventType(type_t type)
631 paje_event_t event = xbt_new0(s_paje_event_t, 1);
632 event->event_type = PAJE_DefineEventType;
633 event->id = pajeDefineEventTypeWithColorId;
634 event->timestamp = 0;
635 event->print = print_pajeDefineEventType;
636 event->data = xbt_new0(s_defineEventType_t, 1);
637 ((defineEventType_t)(event->data))->type = type;
640 event->print (event);
643 xbt_free (event->data);
648 void new_pajeDefineLinkType(type_t type, type_t source, type_t dest)
650 paje_event_t event = xbt_new0(s_paje_event_t, 1);
651 event->event_type = PAJE_DefineLinkType;
652 event->id = pajeDefineLinkTypeId;
653 event->timestamp = 0;
654 event->print = print_pajeDefineLinkType;
655 event->data = xbt_new0(s_defineLinkType_t, 1);
656 ((defineLinkType_t)(event->data))->type = type;
657 ((defineLinkType_t)(event->data))->source = source;
658 ((defineLinkType_t)(event->data))->dest = dest;
661 event->print (event);
664 xbt_free (event->data);
669 void new_pajeCreateContainer (container_t container)
671 paje_event_t event = xbt_new0(s_paje_event_t, 1);
672 event->event_type = PAJE_CreateContainer;
673 event->id = pajeCreateContainerId;
674 event->timestamp = SIMIX_get_clock();
675 event->print = print_pajeCreateContainer;
676 event->data = xbt_new0(s_createContainer_t, 1);
677 ((createContainer_t)(event->data))->container = container;
680 event->print (event);
683 xbt_free (event->data);
688 void new_pajeDestroyContainer (container_t container)
690 paje_event_t event = xbt_new0(s_paje_event_t, 1);
691 event->event_type = PAJE_DestroyContainer;
692 event->id = pajeDestroyContainerId;
693 event->timestamp = SIMIX_get_clock();
694 event->print = print_pajeDestroyContainer;
695 event->data = xbt_new0(s_destroyContainer_t, 1);
696 ((destroyContainer_t)(event->data))->container = container;
699 event->print (event);
702 xbt_free (event->data);
707 void new_pajeSetVariable (double timestamp, container_t container, type_t type, double value)
709 paje_event_t event = xbt_new0(s_paje_event_t, 1);
710 event->event_type = PAJE_SetVariable;
711 event->id = pajeSetVariableId;
712 event->timestamp = timestamp;
713 event->print = print_pajeSetVariable;
714 event->data = xbt_new0(s_setVariable_t, 1);
715 ((setVariable_t)(event->data))->type = type;
716 ((setVariable_t)(event->data))->container = container;
717 ((setVariable_t)(event->data))->value = value;
720 event->print (event);
723 xbt_free (event->data);
729 void new_pajeAddVariable (double timestamp, container_t container, type_t type, double value)
731 paje_event_t event = xbt_new0(s_paje_event_t, 1);
732 event->event_type = PAJE_AddVariable;
733 event->id = pajeAddVariableId;
734 event->timestamp = timestamp;
735 event->print = print_pajeAddVariable;
736 event->data = xbt_new0(s_addVariable_t, 1);
737 ((addVariable_t)(event->data))->type = type;
738 ((addVariable_t)(event->data))->container = container;
739 ((addVariable_t)(event->data))->value = value;
742 event->print (event);
745 xbt_free (event->data);
750 void new_pajeSubVariable (double timestamp, container_t container, type_t type, double value)
752 paje_event_t event = xbt_new0(s_paje_event_t, 1);
753 event->event_type = PAJE_SubVariable;
754 event->id = pajeSubVariableId;
755 event->timestamp = timestamp;
756 event->print = print_pajeSubVariable;
757 event->data = xbt_new0(s_subVariable_t, 1);
758 ((subVariable_t)(event->data))->type = type;
759 ((subVariable_t)(event->data))->container = container;
760 ((subVariable_t)(event->data))->value = value;
763 event->print (event);
766 xbt_free (event->data);
771 void new_pajeSetState (double timestamp, container_t container, type_t type, const char *value)
773 paje_event_t event = xbt_new0(s_paje_event_t, 1);
774 event->event_type = PAJE_SetState;
775 event->id = pajeSetStateId;
776 event->timestamp = timestamp;
777 event->print = print_pajeSetState;
778 event->data = xbt_new0(s_setState_t, 1);
779 ((setState_t)(event->data))->type = type;
780 ((setState_t)(event->data))->container = container;
781 ((setState_t)(event->data))->value = xbt_strdup(value);
784 event->print (event);
787 xbt_free (((setState_t)(event->data))->value);
788 xbt_free (event->data);
794 void new_pajePushState (double timestamp, container_t container, type_t type, const char *value)
796 paje_event_t event = xbt_new0(s_paje_event_t, 1);
797 event->event_type = PAJE_PushState;
798 event->id = pajePushStateId;
799 event->timestamp = timestamp;
800 event->print = print_pajePushState;
801 event->data = xbt_new0(s_pushState_t, 1);
802 ((pushState_t)(event->data))->type = type;
803 ((pushState_t)(event->data))->container = container;
804 ((pushState_t)(event->data))->value = xbt_strdup(value);
807 event->print (event);
810 xbt_free (((pushState_t)(event->data))->value);
811 xbt_free (event->data);
817 void new_pajePopState (double timestamp, container_t container, type_t type)
819 paje_event_t event = xbt_new0(s_paje_event_t, 1);
820 event->event_type = PAJE_PopState;
821 event->id = pajePopStateId;
822 event->timestamp = timestamp;
823 event->print = print_pajePopState;
824 event->data = xbt_new0(s_popState_t, 1);
825 ((popState_t)(event->data))->type = type;
826 ((popState_t)(event->data))->container = container;
829 event->print (event);
832 xbt_free (event->data);
837 void new_pajeStartLink (double timestamp, container_t container, type_t type, container_t sourceContainer, const char *value, const char *key)
839 paje_event_t event = xbt_new0(s_paje_event_t, 1);
840 event->event_type = PAJE_StartLink;
841 event->id = pajeStartLinkId;
842 event->timestamp = timestamp;
843 event->print = print_pajeStartLink;
844 event->data = xbt_new0(s_startLink_t, 1);
845 ((startLink_t)(event->data))->type = type;
846 ((startLink_t)(event->data))->container = container;
847 ((startLink_t)(event->data))->sourceContainer = sourceContainer;
848 ((startLink_t)(event->data))->value = xbt_strdup(value);
849 ((startLink_t)(event->data))->key = xbt_strdup(key);
852 event->print (event);
855 xbt_free (((startLink_t)(event->data))->value);
856 xbt_free (((startLink_t)(event->data))->key);
857 xbt_free (event->data);
862 void new_pajeEndLink (double timestamp, container_t container, type_t type, container_t destContainer, const char *value, const char *key)
864 paje_event_t event = xbt_new0(s_paje_event_t, 1);
865 event->event_type = PAJE_EndLink;
866 event->id = pajeEndLinkId;
867 event->timestamp = timestamp;
868 event->print = print_pajeEndLink;
869 event->data = xbt_new0(s_endLink_t, 1);
870 ((endLink_t)(event->data))->type = type;
871 ((endLink_t)(event->data))->container = container;
872 ((endLink_t)(event->data))->destContainer = destContainer;
873 ((endLink_t)(event->data))->value = xbt_strdup(value);
874 ((endLink_t)(event->data))->key = xbt_strdup(key);
877 event->print (event);
880 xbt_free (((endLink_t)(event->data))->value);
881 xbt_free (((endLink_t)(event->data))->key);
882 xbt_free (event->data);
887 void new_pajeNewEvent (double timestamp, container_t container, type_t type, const char *value)
889 paje_event_t event = xbt_new0(s_paje_event_t, 1);
890 event->event_type = PAJE_NewEvent;
891 event->id = pajeNewEventId;
892 event->timestamp = timestamp;
893 event->print = print_pajeNewEvent;
894 event->data = xbt_new0(s_newEvent_t, 1);
895 ((newEvent_t)(event->data))->type = type;
896 ((newEvent_t)(event->data))->container = container;
897 ((newEvent_t)(event->data))->value = xbt_strdup(value);
900 event->print (event);
903 xbt_free (((newEvent_t)(event->data))->value);
904 xbt_free (event->data);
909 //void pajeNewEvent(double time, const char *entityType,
910 // const char *container, const char *value)
912 // INSTR_PAJE_ASSERT(entityType);
913 // INSTR_PAJE_ASSERT(container);
914 // INSTR_PAJE_ASSERT(value);
917 // fprintf(tracing_file, "%d 0 %s %s %s\n", pajeNewEventId,
918 // entityType, container, value);
920 // fprintf(tracing_file, "%d %lf %s %s %s\n", pajeNewEventId, time,
921 // entityType, container, value);
925 #endif /* HAVE_TRACING */