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 (void)
173 DEBUG2("%s: dump until %f. starts", __FUNCTION__, TRACE_last_timestamp_to_dump);
175 while (xbt_dynar_length (buffer) > 0){
176 double head_timestamp = (*(paje_event_t*)xbt_dynar_get_ptr(buffer, 0))->timestamp;
177 if (head_timestamp > TRACE_last_timestamp_to_dump){
180 xbt_dynar_remove_at (buffer, 0, &event);
181 event->print (event);
184 DEBUG1("%s: ends", __FUNCTION__);
187 void TRACE_paje_create_header(void)
189 DEBUG0 ("Define paje header");
190 fprintf(tracing_file, "\
191 %%EventDef PajeDefineContainerType %d \n\
193 %% ContainerType string \n\
196 %%EventDef PajeDefineVariableType %d \n\
198 %% ContainerType string \n\
202 %%EventDef PajeDefineStateType %d \n\
204 %% ContainerType string \n\
207 %%EventDef PajeDefineEventType %d \n\
209 %% EntityType string \n\
213 %%EventDef PajeDefineLinkType %d \n\
215 %% ContainerType string \n\
216 %% SourceContainerType string \n\
217 %% DestContainerType string \n\
220 %%EventDef PajeCreateContainer %d \n\
224 %% Container string \n\
227 %%EventDef PajeDestroyContainer %d \n\
230 %% Container string \n\
232 %%EventDef PajeSetVariable %d \n\
234 %% EntityType string \n\
235 %% Container string \n\
238 %%EventDef PajeAddVariable %d \n\
240 %% EntityType string \n\
241 %% Container string \n\
244 %%EventDef PajeSubVariable %d \n\
246 %% EntityType string \n\
247 %% Container string \n\
250 %%EventDef PajeSetState %d \n\
252 %% EntityType string \n\
253 %% Container string \n\
256 %%EventDef PajePushState %d \n\
258 %% EntityType string \n\
259 %% Container string \n\
262 %%EventDef PajePopState %d \n\
264 %% EntityType string \n\
265 %% Container string \n\
267 %%EventDef PajeStartLink %d \n\
269 %% EntityType string \n\
270 %% Container string \n\
272 %% SourceContainer string \n\
275 %%EventDef PajeEndLink %d \n\
277 %% EntityType string \n\
278 %% Container string \n\
280 %% DestContainer string \n\
283 %%EventDef PajeNewEvent %d \n\
285 %% EntityType string \n\
286 %% Container string \n\
289 PAJE_DefineContainerType,
290 PAJE_DefineVariableType,
291 PAJE_DefineStateType,
292 PAJE_DefineEventType,
294 PAJE_CreateContainer,
295 PAJE_DestroyContainer,
307 /* internal do the instrumentation module */
308 static void insert_into_buffer (paje_event_t tbi)
310 DEBUG4("%s: insert event_type=%d, timestamp=%f, buffersize=%ld)", __FUNCTION__, tbi->event_type, tbi->timestamp, xbt_dynar_length(buffer));
313 if (xbt_dynar_length(buffer) == 0){
314 xbt_dynar_push (buffer, &tbi);
315 DEBUG1("%s: inserted at beginning", __FUNCTION__);
318 for (i = 0; i < xbt_dynar_length(buffer); i++){
319 paje_event_t e1 = *(paje_event_t*)xbt_dynar_get_ptr(buffer, i);
320 if (e1->timestamp > tbi->timestamp){
321 xbt_dynar_insert_at (buffer, i, &tbi);
322 DEBUG2("%s: inserted at %d", __FUNCTION__, i);
328 xbt_dynar_push (buffer, &tbi);
329 DEBUG1("%s: inserted at end", __FUNCTION__);
334 static void print_pajeDefineContainerType(paje_event_t event)
336 DEBUG2("%s: event_type=%d", __FUNCTION__, event->event_type);
337 fprintf(tracing_file, "%d %s %s %s\n",
339 ((defineContainerType_t)event->data)->type->id,
340 ((defineContainerType_t)event->data)->type->father->id,
341 ((defineContainerType_t)event->data)->type->name);
344 static void print_pajeDefineVariableType(paje_event_t event)
346 DEBUG2("%s: event_type=%d", __FUNCTION__, event->event_type);
347 fprintf(tracing_file, "%d %s %s %s \"%s\"\n",
349 ((defineVariableType_t)event->data)->type->id,
350 ((defineVariableType_t)event->data)->type->father->id,
351 ((defineVariableType_t)event->data)->type->name,
352 ((defineVariableType_t)event->data)->type->color);
355 static void print_pajeDefineStateType(paje_event_t event)
357 DEBUG2("%s: event_type=%d", __FUNCTION__, event->event_type);
358 fprintf(tracing_file, "%d %s %s %s\n",
360 ((defineStateType_t)event->data)->type->id,
361 ((defineStateType_t)event->data)->type->father->id,
362 ((defineStateType_t)event->data)->type->name);
365 static void print_pajeDefineEventType(paje_event_t event)
367 DEBUG2("%s: event_type=%d", __FUNCTION__, event->event_type);
368 fprintf(tracing_file, "%d %s %s %s \"%s\"\n",
370 ((defineEventType_t)event->data)->type->id,
371 ((defineEventType_t)event->data)->type->father->id,
372 ((defineEventType_t)event->data)->type->name,
373 ((defineEventType_t)event->data)->type->color);
376 static void print_pajeDefineLinkType(paje_event_t event)
378 DEBUG2("%s: event_type=%d", __FUNCTION__, event->event_type);
379 fprintf(tracing_file, "%d %s %s %s %s %s\n",
381 ((defineLinkType_t)event->data)->type->id,
382 ((defineLinkType_t)event->data)->type->father->id,
383 ((defineLinkType_t)event->data)->source->id,
384 ((defineLinkType_t)event->data)->dest->id,
385 ((defineLinkType_t)event->data)->type->name);
388 static void print_pajeCreateContainer(paje_event_t event)
390 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
391 if (event->timestamp == 0){
392 fprintf(tracing_file, "%d 0 %s %s %s %s\n",
394 ((createContainer_t)event->data)->container->id,
395 ((createContainer_t)event->data)->container->type->id,
396 ((createContainer_t)event->data)->container->father->id,
397 ((createContainer_t)event->data)->container->name);
399 fprintf(tracing_file, "%d %lf %s %s %s %s\n",
402 ((createContainer_t)event->data)->container->id,
403 ((createContainer_t)event->data)->container->type->id,
404 ((createContainer_t)event->data)->container->father->id,
405 ((createContainer_t)event->data)->container->name);
409 static void print_pajeDestroyContainer(paje_event_t event)
411 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
412 if (event->timestamp == 0){
413 fprintf(tracing_file, "%d 0 %s %s\n",
415 ((destroyContainer_t)event->data)->container->type->id,
416 ((destroyContainer_t)event->data)->container->id);
418 fprintf(tracing_file, "%d %lf %s %s\n",
421 ((destroyContainer_t)event->data)->container->type->id,
422 ((destroyContainer_t)event->data)->container->id);
426 static void print_pajeSetVariable(paje_event_t event)
428 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
429 if (event->timestamp == 0){
430 fprintf(tracing_file, "%d 0 %s %s %f\n",
432 ((setVariable_t)event->data)->type->id,
433 ((setVariable_t)event->data)->container->id,
434 ((setVariable_t)event->data)->value);
436 fprintf(tracing_file, "%d %lf %s %s %f\n",
439 ((setVariable_t)event->data)->type->id,
440 ((setVariable_t)event->data)->container->id,
441 ((setVariable_t)event->data)->value);
445 static void print_pajeAddVariable(paje_event_t event)
447 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
448 if (event->timestamp == 0){
449 fprintf(tracing_file, "%d 0 %s %s %f\n",
451 ((addVariable_t)event->data)->type->id,
452 ((addVariable_t)event->data)->container->id,
453 ((addVariable_t)event->data)->value);
455 fprintf(tracing_file, "%d %lf %s %s %f\n",
458 ((addVariable_t)event->data)->type->id,
459 ((addVariable_t)event->data)->container->id,
460 ((addVariable_t)event->data)->value);
464 static void print_pajeSubVariable(paje_event_t event)
466 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
467 if (event->timestamp == 0){
468 fprintf(tracing_file, "%d 0 %s %s %f\n",
470 ((subVariable_t)event->data)->type->id,
471 ((subVariable_t)event->data)->container->id,
472 ((subVariable_t)event->data)->value);
474 fprintf(tracing_file, "%d %lf %s %s %f\n",
477 ((subVariable_t)event->data)->type->id,
478 ((subVariable_t)event->data)->container->id,
479 ((subVariable_t)event->data)->value);
483 static void print_pajeSetState(paje_event_t event)
485 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
486 if (event->timestamp == 0){
487 fprintf(tracing_file, "%d 0 %s %s %s\n",
489 ((setState_t)event->data)->type->id,
490 ((setState_t)event->data)->container->id,
491 ((setState_t)event->data)->value);
493 fprintf(tracing_file, "%d %lf %s %s %s\n",
496 ((setState_t)event->data)->type->id,
497 ((setState_t)event->data)->container->id,
498 ((setState_t)event->data)->value);
502 static void print_pajePushState(paje_event_t event)
504 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
505 if (event->timestamp == 0){
506 fprintf(tracing_file, "%d 0 %s %s %s\n",
508 ((pushState_t)event->data)->type->id,
509 ((pushState_t)event->data)->container->id,
510 ((pushState_t)event->data)->value);
512 fprintf(tracing_file, "%d %lf %s %s %s\n",
515 ((pushState_t)event->data)->type->id,
516 ((pushState_t)event->data)->container->id,
517 ((pushState_t)event->data)->value);
521 static void print_pajePopState(paje_event_t event)
523 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
524 if (event->timestamp == 0){
525 fprintf(tracing_file, "%d 0 %s %s\n",
527 ((popState_t)event->data)->type->id,
528 ((popState_t)event->data)->container->id);
530 fprintf(tracing_file, "%d %lf %s %s\n",
533 ((popState_t)event->data)->type->id,
534 ((popState_t)event->data)->container->id);
538 static void print_pajeStartLink(paje_event_t event)
540 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
541 if (event->timestamp == 0){
542 fprintf(tracing_file, "%d 0 %s %s %s %s %s\n",
544 ((startLink_t)event->data)->type->id,
545 ((startLink_t)event->data)->container->id,
546 ((startLink_t)event->data)->value,
547 ((startLink_t)event->data)->sourceContainer->id,
548 ((startLink_t)event->data)->key);
550 fprintf(tracing_file, "%d %lf %s %s %s %s %s\n",
553 ((startLink_t)event->data)->type->id,
554 ((startLink_t)event->data)->container->id,
555 ((startLink_t)event->data)->value,
556 ((startLink_t)event->data)->sourceContainer->id,
557 ((startLink_t)event->data)->key);
561 static void print_pajeEndLink(paje_event_t event)
563 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
564 if (event->timestamp == 0){
565 fprintf(tracing_file, "%d 0 %s %s %s %s %s\n",
567 ((endLink_t)event->data)->type->id,
568 ((endLink_t)event->data)->container->id,
569 ((endLink_t)event->data)->value,
570 ((endLink_t)event->data)->destContainer->id,
571 ((endLink_t)event->data)->key);
573 fprintf(tracing_file, "%d %lf %s %s %s %s %s\n",
576 ((endLink_t)event->data)->type->id,
577 ((endLink_t)event->data)->container->id,
578 ((endLink_t)event->data)->value,
579 ((endLink_t)event->data)->destContainer->id,
580 ((endLink_t)event->data)->key);
584 static void print_pajeNewEvent (paje_event_t event)
586 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
587 if (event->timestamp == 0){
588 fprintf(tracing_file, "%d 0 %s %s %s\n",
590 ((newEvent_t)event->data)->type->id,
591 ((newEvent_t)event->data)->container->id,
592 ((newEvent_t)event->data)->value);
594 fprintf(tracing_file, "%d %lf %s %s %s\n",
597 ((newEvent_t)event->data)->type->id,
598 ((newEvent_t)event->data)->container->id,
599 ((newEvent_t)event->data)->value);
603 static void free_paje_event (paje_event_t event)
605 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
606 if (event->event_type == PAJE_SetState) {
607 xbt_free (((setState_t)(event->data))->value);
608 }else if (event->event_type == PAJE_PushState) {
609 xbt_free (((pushState_t)(event->data))->value);
610 }else if (event->event_type == PAJE_NewEvent){
611 xbt_free (((newEvent_t)(event->data))->value);
612 }else if (event->event_type == PAJE_StartLink){
613 xbt_free (((startLink_t)(event->data))->value);
614 xbt_free (((startLink_t)(event->data))->key);
615 }else if (event->event_type == PAJE_EndLink){
616 xbt_free (((endLink_t)(event->data))->value);
617 xbt_free (((endLink_t)(event->data))->key);
619 xbt_free (event->data);
623 void new_pajeDefineContainerType(type_t type)
625 paje_event_t event = xbt_new0(s_paje_event_t, 1);
626 event->event_type = PAJE_DefineContainerType;
627 event->timestamp = 0;
628 event->print = print_pajeDefineContainerType;
629 event->free = free_paje_event;
630 event->data = xbt_new0(s_defineContainerType_t, 1);
631 ((defineContainerType_t)(event->data))->type = type;
633 DEBUG2("%s: event_type=%d", __FUNCTION__, event->event_type);
636 event->print (event);
640 void new_pajeDefineVariableType(type_t type)
642 paje_event_t event = xbt_new0(s_paje_event_t, 1);
643 event->event_type = PAJE_DefineVariableType;
644 event->timestamp = 0;
645 event->print = print_pajeDefineVariableType;
646 event->free = free_paje_event;
647 event->data = xbt_new0(s_defineVariableType_t, 1);
648 ((defineVariableType_t)(event->data))->type = type;
650 DEBUG2("%s: event_type=%d", __FUNCTION__, event->event_type);
653 event->print (event);
657 void new_pajeDefineStateType(type_t type)
659 paje_event_t event = xbt_new0(s_paje_event_t, 1);
660 event->event_type = PAJE_DefineStateType;
661 event->timestamp = 0;
662 event->print = print_pajeDefineStateType;
663 event->free = free_paje_event;
664 event->data = xbt_new0(s_defineStateType_t, 1);
665 ((defineStateType_t)(event->data))->type = type;
667 DEBUG2("%s: event_type=%d", __FUNCTION__, event->event_type);
670 event->print (event);
674 void new_pajeDefineEventType(type_t type)
676 paje_event_t event = xbt_new0(s_paje_event_t, 1);
677 event->event_type = PAJE_DefineEventType;
678 event->timestamp = 0;
679 event->print = print_pajeDefineEventType;
680 event->free = free_paje_event;
681 event->data = xbt_new0(s_defineEventType_t, 1);
682 ((defineEventType_t)(event->data))->type = type;
684 DEBUG2("%s: event_type=%d", __FUNCTION__, event->event_type);
687 event->print (event);
691 void new_pajeDefineLinkType(type_t type, type_t source, type_t dest)
693 paje_event_t event = xbt_new0(s_paje_event_t, 1);
694 event->event_type = PAJE_DefineLinkType;
695 event->timestamp = 0;
696 event->print = print_pajeDefineLinkType;
697 event->free = free_paje_event;
698 event->data = xbt_new0(s_defineLinkType_t, 1);
699 ((defineLinkType_t)(event->data))->type = type;
700 ((defineLinkType_t)(event->data))->source = source;
701 ((defineLinkType_t)(event->data))->dest = dest;
703 DEBUG2("%s: event_type=%d", __FUNCTION__, event->event_type);
706 event->print (event);
710 void new_pajeCreateContainer (container_t container)
712 paje_event_t event = xbt_new0(s_paje_event_t, 1);
713 event->event_type = PAJE_CreateContainer;
714 event->timestamp = SIMIX_get_clock();
715 event->print = print_pajeCreateContainer;
716 event->free = free_paje_event;
717 event->data = xbt_new0(s_createContainer_t, 1);
718 ((createContainer_t)(event->data))->container = container;
720 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
723 event->print (event);
727 void new_pajeDestroyContainer (container_t container)
729 paje_event_t event = xbt_new0(s_paje_event_t, 1);
730 event->event_type = PAJE_DestroyContainer;
731 event->timestamp = SIMIX_get_clock();
732 event->print = print_pajeDestroyContainer;
733 event->free = free_paje_event;
734 event->data = xbt_new0(s_destroyContainer_t, 1);
735 ((destroyContainer_t)(event->data))->container = container;
737 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
740 event->print (event);
744 void new_pajeSetVariable (double timestamp, container_t container, type_t type, double value)
746 paje_event_t event = xbt_new0(s_paje_event_t, 1);
747 event->event_type = PAJE_SetVariable;
748 event->timestamp = timestamp;
749 event->print = print_pajeSetVariable;
750 event->free = free_paje_event;
751 event->data = xbt_new0(s_setVariable_t, 1);
752 ((setVariable_t)(event->data))->type = type;
753 ((setVariable_t)(event->data))->container = container;
754 ((setVariable_t)(event->data))->value = value;
756 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
758 insert_into_buffer (event);
762 void new_pajeAddVariable (double timestamp, container_t container, type_t type, double value)
764 paje_event_t event = xbt_new0(s_paje_event_t, 1);
765 event->event_type = PAJE_AddVariable;
766 event->timestamp = timestamp;
767 event->print = print_pajeAddVariable;
768 event->free = free_paje_event;
769 event->data = xbt_new0(s_addVariable_t, 1);
770 ((addVariable_t)(event->data))->type = type;
771 ((addVariable_t)(event->data))->container = container;
772 ((addVariable_t)(event->data))->value = value;
774 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
776 insert_into_buffer (event);
779 void new_pajeSubVariable (double timestamp, container_t container, type_t type, double value)
781 paje_event_t event = xbt_new0(s_paje_event_t, 1);
782 event->event_type = PAJE_SubVariable;
783 event->timestamp = timestamp;
784 event->print = print_pajeSubVariable;
785 event->free = free_paje_event;
786 event->data = xbt_new0(s_subVariable_t, 1);
787 ((subVariable_t)(event->data))->type = type;
788 ((subVariable_t)(event->data))->container = container;
789 ((subVariable_t)(event->data))->value = value;
791 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
793 insert_into_buffer (event);
796 void new_pajeSetState (double timestamp, container_t container, type_t type, const char *value)
798 paje_event_t event = xbt_new0(s_paje_event_t, 1);
799 event->event_type = PAJE_SetState;
800 event->timestamp = timestamp;
801 event->print = print_pajeSetState;
802 event->free = free_paje_event;
803 event->data = xbt_new0(s_setState_t, 1);
804 ((setState_t)(event->data))->type = type;
805 ((setState_t)(event->data))->container = container;
806 ((setState_t)(event->data))->value = xbt_strdup(value);
808 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
810 insert_into_buffer (event);
814 void new_pajePushState (double timestamp, container_t container, type_t type, const char *value)
816 paje_event_t event = xbt_new0(s_paje_event_t, 1);
817 event->event_type = PAJE_PushState;
818 event->timestamp = timestamp;
819 event->print = print_pajePushState;
820 event->free = free_paje_event;
821 event->data = xbt_new0(s_pushState_t, 1);
822 ((pushState_t)(event->data))->type = type;
823 ((pushState_t)(event->data))->container = container;
824 ((pushState_t)(event->data))->value = xbt_strdup(value);
826 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
828 insert_into_buffer (event);
832 void new_pajePopState (double timestamp, container_t container, type_t type)
834 paje_event_t event = xbt_new0(s_paje_event_t, 1);
835 event->event_type = PAJE_PopState;
836 event->timestamp = timestamp;
837 event->print = print_pajePopState;
838 event->free = free_paje_event;
839 event->data = xbt_new0(s_popState_t, 1);
840 ((popState_t)(event->data))->type = type;
841 ((popState_t)(event->data))->container = container;
843 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
845 insert_into_buffer (event);
848 void new_pajeStartLink (double timestamp, container_t container, type_t type, container_t sourceContainer, const char *value, const char *key)
850 paje_event_t event = xbt_new0(s_paje_event_t, 1);
851 event->event_type = PAJE_StartLink;
852 event->timestamp = timestamp;
853 event->print = print_pajeStartLink;
854 event->free = free_paje_event;
855 event->data = xbt_new0(s_startLink_t, 1);
856 ((startLink_t)(event->data))->type = type;
857 ((startLink_t)(event->data))->container = container;
858 ((startLink_t)(event->data))->sourceContainer = sourceContainer;
859 ((startLink_t)(event->data))->value = xbt_strdup(value);
860 ((startLink_t)(event->data))->key = xbt_strdup(key);
862 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
864 insert_into_buffer (event);
867 void new_pajeEndLink (double timestamp, container_t container, type_t type, container_t destContainer, const char *value, const char *key)
869 paje_event_t event = xbt_new0(s_paje_event_t, 1);
870 event->event_type = PAJE_EndLink;
871 event->timestamp = timestamp;
872 event->print = print_pajeEndLink;
873 event->free = free_paje_event;
874 event->data = xbt_new0(s_endLink_t, 1);
875 ((endLink_t)(event->data))->type = type;
876 ((endLink_t)(event->data))->container = container;
877 ((endLink_t)(event->data))->destContainer = destContainer;
878 ((endLink_t)(event->data))->value = xbt_strdup(value);
879 ((endLink_t)(event->data))->key = xbt_strdup(key);
881 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
883 insert_into_buffer (event);
886 void new_pajeNewEvent (double timestamp, container_t container, type_t type, const char *value)
888 paje_event_t event = xbt_new0(s_paje_event_t, 1);
889 event->event_type = PAJE_NewEvent;
890 event->timestamp = timestamp;
891 event->print = print_pajeNewEvent;
892 event->free = free_paje_event;
893 event->data = xbt_new0(s_newEvent_t, 1);
894 ((newEvent_t)(event->data))->type = type;
895 ((newEvent_t)(event->data))->container = container;
896 ((newEvent_t)(event->data))->value = xbt_strdup(value);
898 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
900 insert_into_buffer (event);
903 #endif /* HAVE_TRACING */