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 unsigned long len = xbt_dynar_length(buffer);
326 xbt_dynar_push (buffer, &tbi);
327 DEBUG1("%s: inserted at beginning", __FUNCTION__);
329 //check if last event has the same timestamp that tbi event
330 paje_event_t e2 = *(paje_event_t*)xbt_dynar_get_ptr (buffer, len-1);
331 if (e2->timestamp == tbi->timestamp){
333 DEBUG2("%s: inserted at end, pos = %ld", __FUNCTION__, len);
334 xbt_dynar_insert_at (buffer, len, &tbi);
338 for (i = 0; i < len; i++){
339 paje_event_t e1 = *(paje_event_t*)xbt_dynar_get_ptr(buffer, i);
340 if (e1->timestamp > tbi->timestamp){
341 xbt_dynar_insert_at (buffer, i, &tbi);
342 DEBUG2("%s: inserted at %d", __FUNCTION__, i);
348 xbt_dynar_push (buffer, &tbi);
349 DEBUG1("%s: inserted at end", __FUNCTION__);
354 static void print_pajeDefineContainerType(paje_event_t event)
356 DEBUG2("%s: event_type=%d", __FUNCTION__, event->event_type);
357 fprintf(tracing_file, "%d %s %s %s\n",
359 ((defineContainerType_t)event->data)->type->id,
360 ((defineContainerType_t)event->data)->type->father->id,
361 ((defineContainerType_t)event->data)->type->name);
364 static void print_pajeDefineVariableType(paje_event_t event)
366 DEBUG2("%s: event_type=%d", __FUNCTION__, event->event_type);
367 fprintf(tracing_file, "%d %s %s %s \"%s\"\n",
369 ((defineVariableType_t)event->data)->type->id,
370 ((defineVariableType_t)event->data)->type->father->id,
371 ((defineVariableType_t)event->data)->type->name,
372 ((defineVariableType_t)event->data)->type->color);
375 static void print_pajeDefineStateType(paje_event_t event)
377 DEBUG2("%s: event_type=%d", __FUNCTION__, event->event_type);
378 fprintf(tracing_file, "%d %s %s %s\n",
380 ((defineStateType_t)event->data)->type->id,
381 ((defineStateType_t)event->data)->type->father->id,
382 ((defineStateType_t)event->data)->type->name);
385 static void print_pajeDefineEventType(paje_event_t event)
387 DEBUG2("%s: event_type=%d", __FUNCTION__, event->event_type);
388 fprintf(tracing_file, "%d %s %s %s \"%s\"\n",
390 ((defineEventType_t)event->data)->type->id,
391 ((defineEventType_t)event->data)->type->father->id,
392 ((defineEventType_t)event->data)->type->name,
393 ((defineEventType_t)event->data)->type->color);
396 static void print_pajeDefineLinkType(paje_event_t event)
398 DEBUG2("%s: event_type=%d", __FUNCTION__, event->event_type);
399 fprintf(tracing_file, "%d %s %s %s %s %s\n",
401 ((defineLinkType_t)event->data)->type->id,
402 ((defineLinkType_t)event->data)->type->father->id,
403 ((defineLinkType_t)event->data)->source->id,
404 ((defineLinkType_t)event->data)->dest->id,
405 ((defineLinkType_t)event->data)->type->name);
408 static void print_pajeCreateContainer(paje_event_t event)
410 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
411 if (event->timestamp == 0){
412 fprintf(tracing_file, "%d 0 %s %s %s %s\n",
414 ((createContainer_t)event->data)->container->id,
415 ((createContainer_t)event->data)->container->type->id,
416 ((createContainer_t)event->data)->container->father->id,
417 ((createContainer_t)event->data)->container->name);
419 fprintf(tracing_file, "%d %lf %s %s %s %s\n",
422 ((createContainer_t)event->data)->container->id,
423 ((createContainer_t)event->data)->container->type->id,
424 ((createContainer_t)event->data)->container->father->id,
425 ((createContainer_t)event->data)->container->name);
429 static void print_pajeDestroyContainer(paje_event_t event)
431 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
432 if (event->timestamp == 0){
433 fprintf(tracing_file, "%d 0 %s %s\n",
435 ((destroyContainer_t)event->data)->container->type->id,
436 ((destroyContainer_t)event->data)->container->id);
438 fprintf(tracing_file, "%d %lf %s %s\n",
441 ((destroyContainer_t)event->data)->container->type->id,
442 ((destroyContainer_t)event->data)->container->id);
446 static void print_pajeSetVariable(paje_event_t event)
448 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
449 if (event->timestamp == 0){
450 fprintf(tracing_file, "%d 0 %s %s %f\n",
452 ((setVariable_t)event->data)->type->id,
453 ((setVariable_t)event->data)->container->id,
454 ((setVariable_t)event->data)->value);
456 fprintf(tracing_file, "%d %lf %s %s %f\n",
459 ((setVariable_t)event->data)->type->id,
460 ((setVariable_t)event->data)->container->id,
461 ((setVariable_t)event->data)->value);
465 static void print_pajeAddVariable(paje_event_t event)
467 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
468 if (event->timestamp == 0){
469 fprintf(tracing_file, "%d 0 %s %s %f\n",
471 ((addVariable_t)event->data)->type->id,
472 ((addVariable_t)event->data)->container->id,
473 ((addVariable_t)event->data)->value);
475 fprintf(tracing_file, "%d %lf %s %s %f\n",
478 ((addVariable_t)event->data)->type->id,
479 ((addVariable_t)event->data)->container->id,
480 ((addVariable_t)event->data)->value);
484 static void print_pajeSubVariable(paje_event_t event)
486 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
487 if (event->timestamp == 0){
488 fprintf(tracing_file, "%d 0 %s %s %f\n",
490 ((subVariable_t)event->data)->type->id,
491 ((subVariable_t)event->data)->container->id,
492 ((subVariable_t)event->data)->value);
494 fprintf(tracing_file, "%d %lf %s %s %f\n",
497 ((subVariable_t)event->data)->type->id,
498 ((subVariable_t)event->data)->container->id,
499 ((subVariable_t)event->data)->value);
503 static void print_pajeSetState(paje_event_t event)
505 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
506 if (event->timestamp == 0){
507 fprintf(tracing_file, "%d 0 %s %s %s\n",
509 ((setState_t)event->data)->type->id,
510 ((setState_t)event->data)->container->id,
511 ((setState_t)event->data)->value);
513 fprintf(tracing_file, "%d %lf %s %s %s\n",
516 ((setState_t)event->data)->type->id,
517 ((setState_t)event->data)->container->id,
518 ((setState_t)event->data)->value);
522 static void print_pajePushState(paje_event_t event)
524 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
525 if (event->timestamp == 0){
526 fprintf(tracing_file, "%d 0 %s %s %s\n",
528 ((pushState_t)event->data)->type->id,
529 ((pushState_t)event->data)->container->id,
530 ((pushState_t)event->data)->value);
532 fprintf(tracing_file, "%d %lf %s %s %s\n",
535 ((pushState_t)event->data)->type->id,
536 ((pushState_t)event->data)->container->id,
537 ((pushState_t)event->data)->value);
541 static void print_pajePopState(paje_event_t event)
543 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
544 if (event->timestamp == 0){
545 fprintf(tracing_file, "%d 0 %s %s\n",
547 ((popState_t)event->data)->type->id,
548 ((popState_t)event->data)->container->id);
550 fprintf(tracing_file, "%d %lf %s %s\n",
553 ((popState_t)event->data)->type->id,
554 ((popState_t)event->data)->container->id);
558 static void print_pajeStartLink(paje_event_t event)
560 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
561 if (event->timestamp == 0){
562 fprintf(tracing_file, "%d 0 %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);
570 fprintf(tracing_file, "%d %lf %s %s %s %s %s\n",
573 ((startLink_t)event->data)->type->id,
574 ((startLink_t)event->data)->container->id,
575 ((startLink_t)event->data)->value,
576 ((startLink_t)event->data)->sourceContainer->id,
577 ((startLink_t)event->data)->key);
581 static void print_pajeEndLink(paje_event_t event)
583 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
584 if (event->timestamp == 0){
585 fprintf(tracing_file, "%d 0 %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);
593 fprintf(tracing_file, "%d %lf %s %s %s %s %s\n",
596 ((endLink_t)event->data)->type->id,
597 ((endLink_t)event->data)->container->id,
598 ((endLink_t)event->data)->value,
599 ((endLink_t)event->data)->destContainer->id,
600 ((endLink_t)event->data)->key);
604 static void print_pajeNewEvent (paje_event_t event)
606 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
607 if (event->timestamp == 0){
608 fprintf(tracing_file, "%d 0 %s %s %s\n",
610 ((newEvent_t)event->data)->type->id,
611 ((newEvent_t)event->data)->container->id,
612 ((newEvent_t)event->data)->value);
614 fprintf(tracing_file, "%d %lf %s %s %s\n",
617 ((newEvent_t)event->data)->type->id,
618 ((newEvent_t)event->data)->container->id,
619 ((newEvent_t)event->data)->value);
623 static void free_paje_event (paje_event_t event)
625 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
626 if (event->event_type == PAJE_SetState) {
627 xbt_free (((setState_t)(event->data))->value);
628 }else if (event->event_type == PAJE_PushState) {
629 xbt_free (((pushState_t)(event->data))->value);
630 }else if (event->event_type == PAJE_NewEvent){
631 xbt_free (((newEvent_t)(event->data))->value);
632 }else if (event->event_type == PAJE_StartLink){
633 xbt_free (((startLink_t)(event->data))->value);
634 xbt_free (((startLink_t)(event->data))->key);
635 }else if (event->event_type == PAJE_EndLink){
636 xbt_free (((endLink_t)(event->data))->value);
637 xbt_free (((endLink_t)(event->data))->key);
639 xbt_free (event->data);
643 void new_pajeDefineContainerType(type_t type)
645 paje_event_t event = xbt_new0(s_paje_event_t, 1);
646 event->event_type = PAJE_DefineContainerType;
647 event->timestamp = 0;
648 event->print = print_pajeDefineContainerType;
649 event->free = free_paje_event;
650 event->data = xbt_new0(s_defineContainerType_t, 1);
651 ((defineContainerType_t)(event->data))->type = type;
653 DEBUG2("%s: event_type=%d", __FUNCTION__, event->event_type);
656 event->print (event);
660 void new_pajeDefineVariableType(type_t type)
662 paje_event_t event = xbt_new0(s_paje_event_t, 1);
663 event->event_type = PAJE_DefineVariableType;
664 event->timestamp = 0;
665 event->print = print_pajeDefineVariableType;
666 event->free = free_paje_event;
667 event->data = xbt_new0(s_defineVariableType_t, 1);
668 ((defineVariableType_t)(event->data))->type = type;
670 DEBUG2("%s: event_type=%d", __FUNCTION__, event->event_type);
673 event->print (event);
677 void new_pajeDefineStateType(type_t type)
679 paje_event_t event = xbt_new0(s_paje_event_t, 1);
680 event->event_type = PAJE_DefineStateType;
681 event->timestamp = 0;
682 event->print = print_pajeDefineStateType;
683 event->free = free_paje_event;
684 event->data = xbt_new0(s_defineStateType_t, 1);
685 ((defineStateType_t)(event->data))->type = type;
687 DEBUG2("%s: event_type=%d", __FUNCTION__, event->event_type);
690 event->print (event);
694 void new_pajeDefineEventType(type_t type)
696 paje_event_t event = xbt_new0(s_paje_event_t, 1);
697 event->event_type = PAJE_DefineEventType;
698 event->timestamp = 0;
699 event->print = print_pajeDefineEventType;
700 event->free = free_paje_event;
701 event->data = xbt_new0(s_defineEventType_t, 1);
702 ((defineEventType_t)(event->data))->type = type;
704 DEBUG2("%s: event_type=%d", __FUNCTION__, event->event_type);
707 event->print (event);
711 void new_pajeDefineLinkType(type_t type, type_t source, type_t dest)
713 paje_event_t event = xbt_new0(s_paje_event_t, 1);
714 event->event_type = PAJE_DefineLinkType;
715 event->timestamp = 0;
716 event->print = print_pajeDefineLinkType;
717 event->free = free_paje_event;
718 event->data = xbt_new0(s_defineLinkType_t, 1);
719 ((defineLinkType_t)(event->data))->type = type;
720 ((defineLinkType_t)(event->data))->source = source;
721 ((defineLinkType_t)(event->data))->dest = dest;
723 DEBUG2("%s: event_type=%d", __FUNCTION__, event->event_type);
726 event->print (event);
730 void new_pajeCreateContainer (container_t container)
732 paje_event_t event = xbt_new0(s_paje_event_t, 1);
733 event->event_type = PAJE_CreateContainer;
734 event->timestamp = SIMIX_get_clock();
735 event->print = print_pajeCreateContainer;
736 event->free = free_paje_event;
737 event->data = xbt_new0(s_createContainer_t, 1);
738 ((createContainer_t)(event->data))->container = container;
740 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
743 event->print (event);
747 void new_pajeDestroyContainer (container_t container)
749 paje_event_t event = xbt_new0(s_paje_event_t, 1);
750 event->event_type = PAJE_DestroyContainer;
751 event->timestamp = SIMIX_get_clock();
752 event->print = print_pajeDestroyContainer;
753 event->free = free_paje_event;
754 event->data = xbt_new0(s_destroyContainer_t, 1);
755 ((destroyContainer_t)(event->data))->container = container;
757 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
760 event->print (event);
764 void new_pajeSetVariable (double timestamp, container_t container, type_t type, double value)
766 paje_event_t event = xbt_new0(s_paje_event_t, 1);
767 event->event_type = PAJE_SetVariable;
768 event->timestamp = timestamp;
769 event->print = print_pajeSetVariable;
770 event->free = free_paje_event;
771 event->data = xbt_new0(s_setVariable_t, 1);
772 ((setVariable_t)(event->data))->type = type;
773 ((setVariable_t)(event->data))->container = container;
774 ((setVariable_t)(event->data))->value = value;
776 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
778 insert_into_buffer (event);
782 void new_pajeAddVariable (double timestamp, container_t container, type_t type, double value)
784 paje_event_t event = xbt_new0(s_paje_event_t, 1);
785 event->event_type = PAJE_AddVariable;
786 event->timestamp = timestamp;
787 event->print = print_pajeAddVariable;
788 event->free = free_paje_event;
789 event->data = xbt_new0(s_addVariable_t, 1);
790 ((addVariable_t)(event->data))->type = type;
791 ((addVariable_t)(event->data))->container = container;
792 ((addVariable_t)(event->data))->value = value;
794 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
796 insert_into_buffer (event);
799 void new_pajeSubVariable (double timestamp, container_t container, type_t type, double value)
801 paje_event_t event = xbt_new0(s_paje_event_t, 1);
802 event->event_type = PAJE_SubVariable;
803 event->timestamp = timestamp;
804 event->print = print_pajeSubVariable;
805 event->free = free_paje_event;
806 event->data = xbt_new0(s_subVariable_t, 1);
807 ((subVariable_t)(event->data))->type = type;
808 ((subVariable_t)(event->data))->container = container;
809 ((subVariable_t)(event->data))->value = value;
811 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
813 insert_into_buffer (event);
816 void new_pajeSetState (double timestamp, container_t container, type_t type, const char *value)
818 paje_event_t event = xbt_new0(s_paje_event_t, 1);
819 event->event_type = PAJE_SetState;
820 event->timestamp = timestamp;
821 event->print = print_pajeSetState;
822 event->free = free_paje_event;
823 event->data = xbt_new0(s_setState_t, 1);
824 ((setState_t)(event->data))->type = type;
825 ((setState_t)(event->data))->container = container;
826 ((setState_t)(event->data))->value = xbt_strdup(value);
828 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
830 insert_into_buffer (event);
834 void new_pajePushState (double timestamp, container_t container, type_t type, const char *value)
836 paje_event_t event = xbt_new0(s_paje_event_t, 1);
837 event->event_type = PAJE_PushState;
838 event->timestamp = timestamp;
839 event->print = print_pajePushState;
840 event->free = free_paje_event;
841 event->data = xbt_new0(s_pushState_t, 1);
842 ((pushState_t)(event->data))->type = type;
843 ((pushState_t)(event->data))->container = container;
844 ((pushState_t)(event->data))->value = xbt_strdup(value);
846 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
848 insert_into_buffer (event);
852 void new_pajePopState (double timestamp, container_t container, type_t type)
854 paje_event_t event = xbt_new0(s_paje_event_t, 1);
855 event->event_type = PAJE_PopState;
856 event->timestamp = timestamp;
857 event->print = print_pajePopState;
858 event->free = free_paje_event;
859 event->data = xbt_new0(s_popState_t, 1);
860 ((popState_t)(event->data))->type = type;
861 ((popState_t)(event->data))->container = container;
863 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
865 insert_into_buffer (event);
868 void new_pajeStartLink (double timestamp, container_t container, type_t type, container_t sourceContainer, const char *value, const char *key)
870 paje_event_t event = xbt_new0(s_paje_event_t, 1);
871 event->event_type = PAJE_StartLink;
872 event->timestamp = timestamp;
873 event->print = print_pajeStartLink;
874 event->free = free_paje_event;
875 event->data = xbt_new0(s_startLink_t, 1);
876 ((startLink_t)(event->data))->type = type;
877 ((startLink_t)(event->data))->container = container;
878 ((startLink_t)(event->data))->sourceContainer = sourceContainer;
879 ((startLink_t)(event->data))->value = xbt_strdup(value);
880 ((startLink_t)(event->data))->key = xbt_strdup(key);
882 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
884 insert_into_buffer (event);
887 void new_pajeEndLink (double timestamp, container_t container, type_t type, container_t destContainer, const char *value, const char *key)
889 paje_event_t event = xbt_new0(s_paje_event_t, 1);
890 event->event_type = PAJE_EndLink;
891 event->timestamp = timestamp;
892 event->print = print_pajeEndLink;
893 event->free = free_paje_event;
894 event->data = xbt_new0(s_endLink_t, 1);
895 ((endLink_t)(event->data))->type = type;
896 ((endLink_t)(event->data))->container = container;
897 ((endLink_t)(event->data))->destContainer = destContainer;
898 ((endLink_t)(event->data))->value = xbt_strdup(value);
899 ((endLink_t)(event->data))->key = xbt_strdup(key);
901 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
903 insert_into_buffer (event);
906 void new_pajeNewEvent (double timestamp, container_t container, type_t type, const char *value)
908 paje_event_t event = xbt_new0(s_paje_event_t, 1);
909 event->event_type = PAJE_NewEvent;
910 event->timestamp = timestamp;
911 event->print = print_pajeNewEvent;
912 event->free = free_paje_event;
913 event->data = xbt_new0(s_newEvent_t, 1);
914 ((newEvent_t)(event->data))->type = type;
915 ((newEvent_t)(event->data))->container = container;
916 ((newEvent_t)(event->data))->value = xbt_strdup(value);
918 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
920 insert_into_buffer (event);
923 #endif /* HAVE_TRACING */