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 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(instr_paje_trace, instr, "Paje tracing event system");
14 PAJE_DefineContainerType,
15 PAJE_DefineVariableType,
20 PAJE_DestroyContainer,
32 typedef struct paje_event *paje_event_t;
33 typedef struct paje_event {
35 e_event_type event_type;
36 void (*print) (paje_event_t event);
37 void (*free) (paje_event_t event);
41 typedef struct s_defineContainerType *defineContainerType_t;
42 typedef struct s_defineContainerType {
44 }s_defineContainerType_t;
46 typedef struct s_defineVariableType *defineVariableType_t;
47 typedef struct s_defineVariableType {
49 }s_defineVariableType_t;
51 typedef struct s_defineStateType *defineStateType_t;
52 typedef struct s_defineStateType {
56 typedef struct s_defineEventType *defineEventType_t;
57 typedef struct s_defineEventType {
61 typedef struct s_defineLinkType *defineLinkType_t;
62 typedef struct s_defineLinkType {
68 typedef struct s_createContainer *createContainer_t;
69 typedef struct s_createContainer {
70 container_t container;
73 typedef struct s_destroyContainer *destroyContainer_t;
74 typedef struct s_destroyContainer {
75 container_t container;
76 }s_destroyContainer_t;
78 typedef struct s_setVariable *setVariable_t;
79 typedef struct s_setVariable {
80 container_t container;
85 typedef struct s_addVariable *addVariable_t;
86 typedef struct s_addVariable {
87 container_t container;
92 typedef struct s_subVariable *subVariable_t;
93 typedef struct s_subVariable {
94 container_t container;
99 typedef struct s_setState *setState_t;
100 typedef struct s_setState {
101 container_t container;
106 typedef struct s_pushState *pushState_t;
107 typedef struct s_pushState {
108 container_t container;
113 typedef struct s_popState *popState_t;
114 typedef struct s_popState {
115 container_t container;
119 typedef struct s_startLink *startLink_t;
120 typedef struct s_startLink {
121 container_t container;
123 container_t sourceContainer;
128 typedef struct s_endLink *endLink_t;
129 typedef struct s_endLink {
130 container_t container;
132 container_t destContainer;
137 typedef struct s_newEvent *newEvent_t;
138 typedef struct s_newEvent {
139 container_t container;
144 static FILE *tracing_file = NULL;
146 static xbt_dynar_t buffer = NULL;
148 void TRACE_paje_start(void)
150 char *filename = TRACE_get_filename();
151 tracing_file = fopen(filename, "w");
152 xbt_assert1 (tracing_file != NULL, "Tracefile %s could not be opened for writing.", filename);
154 DEBUG1("Filename %s is open for writing", filename);
157 TRACE_paje_create_header();
159 buffer = xbt_dynar_new (sizeof(paje_event_t), NULL);
162 void TRACE_paje_end(void)
164 fclose(tracing_file);
165 char *filename = TRACE_get_filename();
166 DEBUG1("Filename %s is closed", filename);
169 double TRACE_last_timestamp_to_dump = 0;
170 //dumps the trace file until the timestamp TRACE_last_timestamp_to_dump
171 void TRACE_paje_dump_buffer (int force)
173 DEBUG2("%s: dump until %f. starts", __FUNCTION__, TRACE_last_timestamp_to_dump);
177 xbt_dynar_foreach(buffer, i, event){
178 event->print (event);
181 xbt_dynar_free (&buffer);
182 buffer = xbt_dynar_new (sizeof(paje_event_t), NULL);
185 while (xbt_dynar_length (buffer) > 0){
186 double head_timestamp = (*(paje_event_t*)xbt_dynar_get_ptr(buffer, 0))->timestamp;
187 if (head_timestamp > TRACE_last_timestamp_to_dump){
190 xbt_dynar_remove_at (buffer, 0, &event);
191 event->print (event);
195 DEBUG1("%s: ends", __FUNCTION__);
198 void TRACE_paje_create_header(void)
200 DEBUG0 ("Define paje header");
201 fprintf(tracing_file, "\
202 %%EventDef PajeDefineContainerType %d \n\
204 %% ContainerType string \n\
207 %%EventDef PajeDefineVariableType %d \n\
209 %% ContainerType string \n\
213 %%EventDef PajeDefineStateType %d \n\
215 %% ContainerType string \n\
218 %%EventDef PajeDefineEventType %d \n\
220 %% EntityType string \n\
224 %%EventDef PajeDefineLinkType %d \n\
226 %% ContainerType string \n\
227 %% SourceContainerType string \n\
228 %% DestContainerType string \n\
231 %%EventDef PajeCreateContainer %d \n\
235 %% Container string \n\
238 %%EventDef PajeDestroyContainer %d \n\
241 %% Container string \n\
243 %%EventDef PajeSetVariable %d \n\
245 %% EntityType string \n\
246 %% Container string \n\
249 %%EventDef PajeAddVariable %d \n\
251 %% EntityType string \n\
252 %% Container string \n\
255 %%EventDef PajeSubVariable %d \n\
257 %% EntityType string \n\
258 %% Container string \n\
261 %%EventDef PajeSetState %d \n\
263 %% EntityType string \n\
264 %% Container string \n\
267 %%EventDef PajePushState %d \n\
269 %% EntityType string \n\
270 %% Container string \n\
273 %%EventDef PajePopState %d \n\
275 %% EntityType string \n\
276 %% Container string \n\
278 %%EventDef PajeStartLink %d \n\
280 %% EntityType string \n\
281 %% Container string \n\
283 %% SourceContainer string \n\
286 %%EventDef PajeEndLink %d \n\
288 %% EntityType string \n\
289 %% Container string \n\
291 %% DestContainer string \n\
294 %%EventDef PajeNewEvent %d \n\
296 %% EntityType string \n\
297 %% Container string \n\
300 PAJE_DefineContainerType,
301 PAJE_DefineVariableType,
302 PAJE_DefineStateType,
303 PAJE_DefineEventType,
305 PAJE_CreateContainer,
306 PAJE_DestroyContainer,
318 /* internal do the instrumentation module */
319 static void insert_into_buffer (paje_event_t tbi)
321 DEBUG4("%s: insert event_type=%d, timestamp=%f, buffersize=%ld)", __FUNCTION__, tbi->event_type, tbi->timestamp, xbt_dynar_length(buffer));
324 if (xbt_dynar_length(buffer) == 0){
325 xbt_dynar_push (buffer, &tbi);
326 DEBUG1("%s: inserted at beginning", __FUNCTION__);
329 for (i = 0; i < xbt_dynar_length(buffer); i++){
330 paje_event_t e1 = *(paje_event_t*)xbt_dynar_get_ptr(buffer, i);
331 if (e1->timestamp > tbi->timestamp){
332 xbt_dynar_insert_at (buffer, i, &tbi);
333 DEBUG2("%s: inserted at %d", __FUNCTION__, i);
339 xbt_dynar_push (buffer, &tbi);
340 DEBUG1("%s: inserted at end", __FUNCTION__);
345 static void print_pajeDefineContainerType(paje_event_t event)
347 DEBUG2("%s: event_type=%d", __FUNCTION__, event->event_type);
348 fprintf(tracing_file, "%d %s %s %s\n",
350 ((defineContainerType_t)event->data)->type->id,
351 ((defineContainerType_t)event->data)->type->father->id,
352 ((defineContainerType_t)event->data)->type->name);
355 static void print_pajeDefineVariableType(paje_event_t event)
357 DEBUG2("%s: event_type=%d", __FUNCTION__, event->event_type);
358 fprintf(tracing_file, "%d %s %s %s \"%s\"\n",
360 ((defineVariableType_t)event->data)->type->id,
361 ((defineVariableType_t)event->data)->type->father->id,
362 ((defineVariableType_t)event->data)->type->name,
363 ((defineVariableType_t)event->data)->type->color);
366 static void print_pajeDefineStateType(paje_event_t event)
368 DEBUG2("%s: event_type=%d", __FUNCTION__, event->event_type);
369 fprintf(tracing_file, "%d %s %s %s\n",
371 ((defineStateType_t)event->data)->type->id,
372 ((defineStateType_t)event->data)->type->father->id,
373 ((defineStateType_t)event->data)->type->name);
376 static void print_pajeDefineEventType(paje_event_t event)
378 DEBUG2("%s: event_type=%d", __FUNCTION__, event->event_type);
379 fprintf(tracing_file, "%d %s %s %s \"%s\"\n",
381 ((defineEventType_t)event->data)->type->id,
382 ((defineEventType_t)event->data)->type->father->id,
383 ((defineEventType_t)event->data)->type->name,
384 ((defineEventType_t)event->data)->type->color);
387 static void print_pajeDefineLinkType(paje_event_t event)
389 DEBUG2("%s: event_type=%d", __FUNCTION__, event->event_type);
390 fprintf(tracing_file, "%d %s %s %s %s %s\n",
392 ((defineLinkType_t)event->data)->type->id,
393 ((defineLinkType_t)event->data)->type->father->id,
394 ((defineLinkType_t)event->data)->source->id,
395 ((defineLinkType_t)event->data)->dest->id,
396 ((defineLinkType_t)event->data)->type->name);
399 static void print_pajeCreateContainer(paje_event_t event)
401 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
402 if (event->timestamp == 0){
403 fprintf(tracing_file, "%d 0 %s %s %s %s\n",
405 ((createContainer_t)event->data)->container->id,
406 ((createContainer_t)event->data)->container->type->id,
407 ((createContainer_t)event->data)->container->father->id,
408 ((createContainer_t)event->data)->container->name);
410 fprintf(tracing_file, "%d %lf %s %s %s %s\n",
413 ((createContainer_t)event->data)->container->id,
414 ((createContainer_t)event->data)->container->type->id,
415 ((createContainer_t)event->data)->container->father->id,
416 ((createContainer_t)event->data)->container->name);
420 static void print_pajeDestroyContainer(paje_event_t event)
422 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
423 if (event->timestamp == 0){
424 fprintf(tracing_file, "%d 0 %s %s\n",
426 ((destroyContainer_t)event->data)->container->type->id,
427 ((destroyContainer_t)event->data)->container->id);
429 fprintf(tracing_file, "%d %lf %s %s\n",
432 ((destroyContainer_t)event->data)->container->type->id,
433 ((destroyContainer_t)event->data)->container->id);
437 static void print_pajeSetVariable(paje_event_t event)
439 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
440 if (event->timestamp == 0){
441 fprintf(tracing_file, "%d 0 %s %s %f\n",
443 ((setVariable_t)event->data)->type->id,
444 ((setVariable_t)event->data)->container->id,
445 ((setVariable_t)event->data)->value);
447 fprintf(tracing_file, "%d %lf %s %s %f\n",
450 ((setVariable_t)event->data)->type->id,
451 ((setVariable_t)event->data)->container->id,
452 ((setVariable_t)event->data)->value);
456 static void print_pajeAddVariable(paje_event_t event)
458 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
459 if (event->timestamp == 0){
460 fprintf(tracing_file, "%d 0 %s %s %f\n",
462 ((addVariable_t)event->data)->type->id,
463 ((addVariable_t)event->data)->container->id,
464 ((addVariable_t)event->data)->value);
466 fprintf(tracing_file, "%d %lf %s %s %f\n",
469 ((addVariable_t)event->data)->type->id,
470 ((addVariable_t)event->data)->container->id,
471 ((addVariable_t)event->data)->value);
475 static void print_pajeSubVariable(paje_event_t event)
477 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
478 if (event->timestamp == 0){
479 fprintf(tracing_file, "%d 0 %s %s %f\n",
481 ((subVariable_t)event->data)->type->id,
482 ((subVariable_t)event->data)->container->id,
483 ((subVariable_t)event->data)->value);
485 fprintf(tracing_file, "%d %lf %s %s %f\n",
488 ((subVariable_t)event->data)->type->id,
489 ((subVariable_t)event->data)->container->id,
490 ((subVariable_t)event->data)->value);
494 static void print_pajeSetState(paje_event_t event)
496 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
497 if (event->timestamp == 0){
498 fprintf(tracing_file, "%d 0 %s %s %s\n",
500 ((setState_t)event->data)->type->id,
501 ((setState_t)event->data)->container->id,
502 ((setState_t)event->data)->value);
504 fprintf(tracing_file, "%d %lf %s %s %s\n",
507 ((setState_t)event->data)->type->id,
508 ((setState_t)event->data)->container->id,
509 ((setState_t)event->data)->value);
513 static void print_pajePushState(paje_event_t event)
515 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
516 if (event->timestamp == 0){
517 fprintf(tracing_file, "%d 0 %s %s %s\n",
519 ((pushState_t)event->data)->type->id,
520 ((pushState_t)event->data)->container->id,
521 ((pushState_t)event->data)->value);
523 fprintf(tracing_file, "%d %lf %s %s %s\n",
526 ((pushState_t)event->data)->type->id,
527 ((pushState_t)event->data)->container->id,
528 ((pushState_t)event->data)->value);
532 static void print_pajePopState(paje_event_t event)
534 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
535 if (event->timestamp == 0){
536 fprintf(tracing_file, "%d 0 %s %s\n",
538 ((popState_t)event->data)->type->id,
539 ((popState_t)event->data)->container->id);
541 fprintf(tracing_file, "%d %lf %s %s\n",
544 ((popState_t)event->data)->type->id,
545 ((popState_t)event->data)->container->id);
549 static void print_pajeStartLink(paje_event_t event)
551 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
552 if (event->timestamp == 0){
553 fprintf(tracing_file, "%d 0 %s %s %s %s %s\n",
555 ((startLink_t)event->data)->type->id,
556 ((startLink_t)event->data)->container->id,
557 ((startLink_t)event->data)->value,
558 ((startLink_t)event->data)->sourceContainer->id,
559 ((startLink_t)event->data)->key);
561 fprintf(tracing_file, "%d %lf %s %s %s %s %s\n",
564 ((startLink_t)event->data)->type->id,
565 ((startLink_t)event->data)->container->id,
566 ((startLink_t)event->data)->value,
567 ((startLink_t)event->data)->sourceContainer->id,
568 ((startLink_t)event->data)->key);
572 static void print_pajeEndLink(paje_event_t event)
574 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
575 if (event->timestamp == 0){
576 fprintf(tracing_file, "%d 0 %s %s %s %s %s\n",
578 ((endLink_t)event->data)->type->id,
579 ((endLink_t)event->data)->container->id,
580 ((endLink_t)event->data)->value,
581 ((endLink_t)event->data)->destContainer->id,
582 ((endLink_t)event->data)->key);
584 fprintf(tracing_file, "%d %lf %s %s %s %s %s\n",
587 ((endLink_t)event->data)->type->id,
588 ((endLink_t)event->data)->container->id,
589 ((endLink_t)event->data)->value,
590 ((endLink_t)event->data)->destContainer->id,
591 ((endLink_t)event->data)->key);
595 static void print_pajeNewEvent (paje_event_t event)
597 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
598 if (event->timestamp == 0){
599 fprintf(tracing_file, "%d 0 %s %s %s\n",
601 ((newEvent_t)event->data)->type->id,
602 ((newEvent_t)event->data)->container->id,
603 ((newEvent_t)event->data)->value);
605 fprintf(tracing_file, "%d %lf %s %s %s\n",
608 ((newEvent_t)event->data)->type->id,
609 ((newEvent_t)event->data)->container->id,
610 ((newEvent_t)event->data)->value);
614 static void free_paje_event (paje_event_t event)
616 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
617 if (event->event_type == PAJE_SetState) {
618 xbt_free (((setState_t)(event->data))->value);
619 }else if (event->event_type == PAJE_PushState) {
620 xbt_free (((pushState_t)(event->data))->value);
621 }else if (event->event_type == PAJE_NewEvent){
622 xbt_free (((newEvent_t)(event->data))->value);
623 }else if (event->event_type == PAJE_StartLink){
624 xbt_free (((startLink_t)(event->data))->value);
625 xbt_free (((startLink_t)(event->data))->key);
626 }else if (event->event_type == PAJE_EndLink){
627 xbt_free (((endLink_t)(event->data))->value);
628 xbt_free (((endLink_t)(event->data))->key);
630 xbt_free (event->data);
634 void new_pajeDefineContainerType(type_t type)
636 paje_event_t event = xbt_new0(s_paje_event_t, 1);
637 event->event_type = PAJE_DefineContainerType;
638 event->timestamp = 0;
639 event->print = print_pajeDefineContainerType;
640 event->free = free_paje_event;
641 event->data = xbt_new0(s_defineContainerType_t, 1);
642 ((defineContainerType_t)(event->data))->type = type;
644 DEBUG2("%s: event_type=%d", __FUNCTION__, event->event_type);
647 event->print (event);
651 void new_pajeDefineVariableType(type_t type)
653 paje_event_t event = xbt_new0(s_paje_event_t, 1);
654 event->event_type = PAJE_DefineVariableType;
655 event->timestamp = 0;
656 event->print = print_pajeDefineVariableType;
657 event->free = free_paje_event;
658 event->data = xbt_new0(s_defineVariableType_t, 1);
659 ((defineVariableType_t)(event->data))->type = type;
661 DEBUG2("%s: event_type=%d", __FUNCTION__, event->event_type);
664 event->print (event);
668 void new_pajeDefineStateType(type_t type)
670 paje_event_t event = xbt_new0(s_paje_event_t, 1);
671 event->event_type = PAJE_DefineStateType;
672 event->timestamp = 0;
673 event->print = print_pajeDefineStateType;
674 event->free = free_paje_event;
675 event->data = xbt_new0(s_defineStateType_t, 1);
676 ((defineStateType_t)(event->data))->type = type;
678 DEBUG2("%s: event_type=%d", __FUNCTION__, event->event_type);
681 event->print (event);
685 void new_pajeDefineEventType(type_t type)
687 paje_event_t event = xbt_new0(s_paje_event_t, 1);
688 event->event_type = PAJE_DefineEventType;
689 event->timestamp = 0;
690 event->print = print_pajeDefineEventType;
691 event->free = free_paje_event;
692 event->data = xbt_new0(s_defineEventType_t, 1);
693 ((defineEventType_t)(event->data))->type = type;
695 DEBUG2("%s: event_type=%d", __FUNCTION__, event->event_type);
698 event->print (event);
702 void new_pajeDefineLinkType(type_t type, type_t source, type_t dest)
704 paje_event_t event = xbt_new0(s_paje_event_t, 1);
705 event->event_type = PAJE_DefineLinkType;
706 event->timestamp = 0;
707 event->print = print_pajeDefineLinkType;
708 event->free = free_paje_event;
709 event->data = xbt_new0(s_defineLinkType_t, 1);
710 ((defineLinkType_t)(event->data))->type = type;
711 ((defineLinkType_t)(event->data))->source = source;
712 ((defineLinkType_t)(event->data))->dest = dest;
714 DEBUG2("%s: event_type=%d", __FUNCTION__, event->event_type);
717 event->print (event);
721 void new_pajeCreateContainer (container_t container)
723 paje_event_t event = xbt_new0(s_paje_event_t, 1);
724 event->event_type = PAJE_CreateContainer;
725 event->timestamp = SIMIX_get_clock();
726 event->print = print_pajeCreateContainer;
727 event->free = free_paje_event;
728 event->data = xbt_new0(s_createContainer_t, 1);
729 ((createContainer_t)(event->data))->container = container;
731 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
734 event->print (event);
738 void new_pajeDestroyContainer (container_t container)
740 paje_event_t event = xbt_new0(s_paje_event_t, 1);
741 event->event_type = PAJE_DestroyContainer;
742 event->timestamp = SIMIX_get_clock();
743 event->print = print_pajeDestroyContainer;
744 event->free = free_paje_event;
745 event->data = xbt_new0(s_destroyContainer_t, 1);
746 ((destroyContainer_t)(event->data))->container = container;
748 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
751 event->print (event);
755 void new_pajeSetVariable (double timestamp, container_t container, type_t type, double value)
757 paje_event_t event = xbt_new0(s_paje_event_t, 1);
758 event->event_type = PAJE_SetVariable;
759 event->timestamp = timestamp;
760 event->print = print_pajeSetVariable;
761 event->free = free_paje_event;
762 event->data = xbt_new0(s_setVariable_t, 1);
763 ((setVariable_t)(event->data))->type = type;
764 ((setVariable_t)(event->data))->container = container;
765 ((setVariable_t)(event->data))->value = value;
767 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
769 insert_into_buffer (event);
773 void new_pajeAddVariable (double timestamp, container_t container, type_t type, double value)
775 paje_event_t event = xbt_new0(s_paje_event_t, 1);
776 event->event_type = PAJE_AddVariable;
777 event->timestamp = timestamp;
778 event->print = print_pajeAddVariable;
779 event->free = free_paje_event;
780 event->data = xbt_new0(s_addVariable_t, 1);
781 ((addVariable_t)(event->data))->type = type;
782 ((addVariable_t)(event->data))->container = container;
783 ((addVariable_t)(event->data))->value = value;
785 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
787 insert_into_buffer (event);
790 void new_pajeSubVariable (double timestamp, container_t container, type_t type, double value)
792 paje_event_t event = xbt_new0(s_paje_event_t, 1);
793 event->event_type = PAJE_SubVariable;
794 event->timestamp = timestamp;
795 event->print = print_pajeSubVariable;
796 event->free = free_paje_event;
797 event->data = xbt_new0(s_subVariable_t, 1);
798 ((subVariable_t)(event->data))->type = type;
799 ((subVariable_t)(event->data))->container = container;
800 ((subVariable_t)(event->data))->value = value;
802 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
804 insert_into_buffer (event);
807 void new_pajeSetState (double timestamp, container_t container, type_t type, const char *value)
809 paje_event_t event = xbt_new0(s_paje_event_t, 1);
810 event->event_type = PAJE_SetState;
811 event->timestamp = timestamp;
812 event->print = print_pajeSetState;
813 event->free = free_paje_event;
814 event->data = xbt_new0(s_setState_t, 1);
815 ((setState_t)(event->data))->type = type;
816 ((setState_t)(event->data))->container = container;
817 ((setState_t)(event->data))->value = xbt_strdup(value);
819 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
821 insert_into_buffer (event);
825 void new_pajePushState (double timestamp, container_t container, type_t type, const char *value)
827 paje_event_t event = xbt_new0(s_paje_event_t, 1);
828 event->event_type = PAJE_PushState;
829 event->timestamp = timestamp;
830 event->print = print_pajePushState;
831 event->free = free_paje_event;
832 event->data = xbt_new0(s_pushState_t, 1);
833 ((pushState_t)(event->data))->type = type;
834 ((pushState_t)(event->data))->container = container;
835 ((pushState_t)(event->data))->value = xbt_strdup(value);
837 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
839 insert_into_buffer (event);
843 void new_pajePopState (double timestamp, container_t container, type_t type)
845 paje_event_t event = xbt_new0(s_paje_event_t, 1);
846 event->event_type = PAJE_PopState;
847 event->timestamp = timestamp;
848 event->print = print_pajePopState;
849 event->free = free_paje_event;
850 event->data = xbt_new0(s_popState_t, 1);
851 ((popState_t)(event->data))->type = type;
852 ((popState_t)(event->data))->container = container;
854 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
856 insert_into_buffer (event);
859 void new_pajeStartLink (double timestamp, container_t container, type_t type, container_t sourceContainer, const char *value, const char *key)
861 paje_event_t event = xbt_new0(s_paje_event_t, 1);
862 event->event_type = PAJE_StartLink;
863 event->timestamp = timestamp;
864 event->print = print_pajeStartLink;
865 event->free = free_paje_event;
866 event->data = xbt_new0(s_startLink_t, 1);
867 ((startLink_t)(event->data))->type = type;
868 ((startLink_t)(event->data))->container = container;
869 ((startLink_t)(event->data))->sourceContainer = sourceContainer;
870 ((startLink_t)(event->data))->value = xbt_strdup(value);
871 ((startLink_t)(event->data))->key = xbt_strdup(key);
873 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
875 insert_into_buffer (event);
878 void new_pajeEndLink (double timestamp, container_t container, type_t type, container_t destContainer, const char *value, const char *key)
880 paje_event_t event = xbt_new0(s_paje_event_t, 1);
881 event->event_type = PAJE_EndLink;
882 event->timestamp = timestamp;
883 event->print = print_pajeEndLink;
884 event->free = free_paje_event;
885 event->data = xbt_new0(s_endLink_t, 1);
886 ((endLink_t)(event->data))->type = type;
887 ((endLink_t)(event->data))->container = container;
888 ((endLink_t)(event->data))->destContainer = destContainer;
889 ((endLink_t)(event->data))->value = xbt_strdup(value);
890 ((endLink_t)(event->data))->key = xbt_strdup(key);
892 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
894 insert_into_buffer (event);
897 void new_pajeNewEvent (double timestamp, container_t container, type_t type, const char *value)
899 paje_event_t event = xbt_new0(s_paje_event_t, 1);
900 event->event_type = PAJE_NewEvent;
901 event->timestamp = timestamp;
902 event->print = print_pajeNewEvent;
903 event->free = free_paje_event;
904 event->data = xbt_new0(s_newEvent_t, 1);
905 ((newEvent_t)(event->data))->type = type;
906 ((newEvent_t)(event->data))->container = container;
907 ((newEvent_t)(event->data))->value = xbt_strdup(value);
909 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
911 insert_into_buffer (event);
914 #endif /* HAVE_TRACING */