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,
19 PAJE_DefineEntityValue,
21 PAJE_DestroyContainer,
33 typedef struct paje_event *paje_event_t;
34 typedef struct paje_event {
36 e_event_type event_type;
37 void (*print) (paje_event_t event);
38 void (*free) (paje_event_t event);
42 typedef struct s_defineContainerType *defineContainerType_t;
43 typedef struct s_defineContainerType {
45 }s_defineContainerType_t;
47 typedef struct s_defineVariableType *defineVariableType_t;
48 typedef struct s_defineVariableType {
50 }s_defineVariableType_t;
52 typedef struct s_defineStateType *defineStateType_t;
53 typedef struct s_defineStateType {
57 typedef struct s_defineEventType *defineEventType_t;
58 typedef struct s_defineEventType {
62 typedef struct s_defineLinkType *defineLinkType_t;
63 typedef struct s_defineLinkType {
69 typedef struct s_defineEntityValue *defineEntityValue_t;
70 typedef struct s_defineEntityValue {
72 }s_defineEntityValue_t;
74 typedef struct s_createContainer *createContainer_t;
75 typedef struct s_createContainer {
76 container_t container;
79 typedef struct s_destroyContainer *destroyContainer_t;
80 typedef struct s_destroyContainer {
81 container_t container;
82 }s_destroyContainer_t;
84 typedef struct s_setVariable *setVariable_t;
85 typedef struct s_setVariable {
86 container_t container;
91 typedef struct s_addVariable *addVariable_t;
92 typedef struct s_addVariable {
93 container_t container;
98 typedef struct s_subVariable *subVariable_t;
99 typedef struct s_subVariable {
100 container_t container;
105 typedef struct s_setState *setState_t;
106 typedef struct s_setState {
107 container_t container;
112 typedef struct s_pushState *pushState_t;
113 typedef struct s_pushState {
114 container_t container;
119 typedef struct s_popState *popState_t;
120 typedef struct s_popState {
121 container_t container;
125 typedef struct s_startLink *startLink_t;
126 typedef struct s_startLink {
127 container_t container;
129 container_t sourceContainer;
134 typedef struct s_endLink *endLink_t;
135 typedef struct s_endLink {
136 container_t container;
138 container_t destContainer;
143 typedef struct s_newEvent *newEvent_t;
144 typedef struct s_newEvent {
145 container_t container;
150 static FILE *tracing_file = NULL;
152 static xbt_dynar_t buffer = NULL;
154 void TRACE_paje_start(void)
156 char *filename = TRACE_get_filename();
157 tracing_file = fopen(filename, "w");
158 if (tracing_file == NULL){
159 THROWF (system_error, 1, "Tracefile %s could not be opened for writing.", filename);
162 XBT_DEBUG("Filename %s is open for writing", filename);
165 TRACE_paje_create_header();
167 buffer = xbt_dynar_new (sizeof(paje_event_t), NULL);
170 void TRACE_paje_end(void)
172 fclose(tracing_file);
173 char *filename = TRACE_get_filename();
174 xbt_dynar_free (&buffer);
175 XBT_DEBUG("Filename %s is closed", filename);
178 double TRACE_last_timestamp_to_dump = 0;
179 //dumps the trace file until the timestamp TRACE_last_timestamp_to_dump
180 void TRACE_paje_dump_buffer (int force)
182 if (!TRACE_is_enabled()) return;
183 XBT_DEBUG("%s: dump until %f. starts", __FUNCTION__, TRACE_last_timestamp_to_dump);
187 xbt_dynar_foreach(buffer, i, event){
188 event->print (event);
191 xbt_dynar_free (&buffer);
192 buffer = xbt_dynar_new (sizeof(paje_event_t), NULL);
195 while (!xbt_dynar_is_empty(buffer)){
196 double head_timestamp = (*(paje_event_t*)xbt_dynar_get_ptr(buffer, 0))->timestamp;
197 if (head_timestamp > TRACE_last_timestamp_to_dump){
200 xbt_dynar_remove_at (buffer, 0, &event);
201 event->print (event);
205 XBT_DEBUG("%s: ends", __FUNCTION__);
208 void TRACE_paje_create_header(void)
210 XBT_DEBUG ("Define paje header");
211 fprintf(tracing_file, "\
212 %%EventDef PajeDefineContainerType %d \n\
214 %% ContainerType string \n\
217 %%EventDef PajeDefineVariableType %d \n\
219 %% ContainerType string \n\
223 %%EventDef PajeDefineStateType %d \n\
225 %% ContainerType string \n\
228 %%EventDef PajeDefineEventType %d \n\
230 %% ContainerType string \n\
234 %%EventDef PajeDefineLinkType %d \n\
236 %% ContainerType string \n\
237 %% SourceContainerType string \n\
238 %% DestContainerType string \n\
241 %%EventDef PajeDefineEntityValue %d \n\
243 %% EntityType string \n\
247 %%EventDef PajeCreateContainer %d \n\
251 %% Container string \n\
254 %%EventDef PajeDestroyContainer %d \n\
259 %%EventDef PajeSetVariable %d \n\
262 %% Container string \n\
265 %%EventDef PajeAddVariable %d \n\
268 %% Container string \n\
271 %%EventDef PajeSubVariable %d \n\
274 %% Container string \n\
277 %%EventDef PajeSetState %d \n\
280 %% Container string \n\
283 %%EventDef PajePushState %d \n\
286 %% Container string \n\
289 %%EventDef PajePopState %d \n\
292 %% Container string \n\
294 %%EventDef PajeStartLink %d \n\
297 %% Container string \n\
299 %% SourceContainer string \n\
302 %%EventDef PajeEndLink %d \n\
305 %% Container string \n\
307 %% DestContainer string \n\
310 %%EventDef PajeNewEvent %d \n\
313 %% Container string \n\
316 PAJE_DefineContainerType,
317 PAJE_DefineVariableType,
318 PAJE_DefineStateType,
319 PAJE_DefineEventType,
321 PAJE_DefineEntityValue,
322 PAJE_CreateContainer,
323 PAJE_DestroyContainer,
335 /* internal do the instrumentation module */
336 static void insert_into_buffer (paje_event_t tbi)
338 if (TRACE_buffer() == 0){
343 XBT_DEBUG("%s: insert event_type=%d, timestamp=%f, buffersize=%ld)", __FUNCTION__, tbi->event_type, tbi->timestamp, xbt_dynar_length(buffer));
346 for (i = xbt_dynar_length(buffer); i > 0; i--) {
347 paje_event_t e1 = *(paje_event_t*)xbt_dynar_get_ptr(buffer, i - 1);
348 if (e1->timestamp <= tbi->timestamp)
351 xbt_dynar_insert_at(buffer, i, &tbi);
353 XBT_DEBUG("%s: inserted at beginning", __FUNCTION__);
355 XBT_DEBUG("%s: inserted at%s %d", __FUNCTION__,
356 (i == xbt_dynar_length(buffer) - 1 ? " end, pos =" : ""), i);
359 static void print_pajeDefineContainerType(paje_event_t event)
361 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, event->event_type);
362 fprintf(tracing_file, "%d %s %s %s\n",
364 ((defineContainerType_t)event->data)->type->id,
365 ((defineContainerType_t)event->data)->type->father->id,
366 ((defineContainerType_t)event->data)->type->name);
369 static void print_pajeDefineVariableType(paje_event_t event)
371 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, event->event_type);
372 fprintf(tracing_file, "%d %s %s %s \"%s\"\n",
374 ((defineVariableType_t)event->data)->type->id,
375 ((defineVariableType_t)event->data)->type->father->id,
376 ((defineVariableType_t)event->data)->type->name,
377 ((defineVariableType_t)event->data)->type->color);
380 static void print_pajeDefineStateType(paje_event_t event)
382 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, event->event_type);
383 fprintf(tracing_file, "%d %s %s %s\n",
385 ((defineStateType_t)event->data)->type->id,
386 ((defineStateType_t)event->data)->type->father->id,
387 ((defineStateType_t)event->data)->type->name);
390 static void print_pajeDefineEventType(paje_event_t event)
392 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, event->event_type);
393 fprintf(tracing_file, "%d %s %s %s \"%s\"\n",
395 ((defineEventType_t)event->data)->type->id,
396 ((defineEventType_t)event->data)->type->father->id,
397 ((defineEventType_t)event->data)->type->name,
398 ((defineEventType_t)event->data)->type->color);
401 static void print_pajeDefineLinkType(paje_event_t event)
403 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, event->event_type);
404 fprintf(tracing_file, "%d %s %s %s %s %s\n",
406 ((defineLinkType_t)event->data)->type->id,
407 ((defineLinkType_t)event->data)->type->father->id,
408 ((defineLinkType_t)event->data)->source->id,
409 ((defineLinkType_t)event->data)->dest->id,
410 ((defineLinkType_t)event->data)->type->name);
413 static void print_pajeDefineEntityValue (paje_event_t event)
415 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, event->event_type);
416 fprintf(tracing_file, "%d %s %s %s \"%s\"\n",
418 ((defineEntityValue_t)event->data)->value->id,
419 ((defineEntityValue_t)event->data)->value->father->id,
420 ((defineEntityValue_t)event->data)->value->name,
421 ((defineEntityValue_t)event->data)->value->color);
424 static void print_pajeCreateContainer(paje_event_t event)
426 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
427 if (event->timestamp == 0){
428 fprintf(tracing_file, "%d 0 %s %s %s \"%s\"\n",
430 ((createContainer_t)event->data)->container->id,
431 ((createContainer_t)event->data)->container->type->id,
432 ((createContainer_t)event->data)->container->father->id,
433 ((createContainer_t)event->data)->container->name);
435 fprintf(tracing_file, "%d %lf %s %s %s \"%s\"\n",
438 ((createContainer_t)event->data)->container->id,
439 ((createContainer_t)event->data)->container->type->id,
440 ((createContainer_t)event->data)->container->father->id,
441 ((createContainer_t)event->data)->container->name);
445 static void print_pajeDestroyContainer(paje_event_t event)
447 XBT_DEBUG("%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\n",
451 ((destroyContainer_t)event->data)->container->type->id,
452 ((destroyContainer_t)event->data)->container->id);
454 fprintf(tracing_file, "%d %lf %s %s\n",
457 ((destroyContainer_t)event->data)->container->type->id,
458 ((destroyContainer_t)event->data)->container->id);
462 static void print_pajeSetVariable(paje_event_t event)
464 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
465 if (event->timestamp == 0){
466 fprintf(tracing_file, "%d 0 %s %s %f\n",
468 ((setVariable_t)event->data)->type->id,
469 ((setVariable_t)event->data)->container->id,
470 ((setVariable_t)event->data)->value);
472 fprintf(tracing_file, "%d %lf %s %s %f\n",
475 ((setVariable_t)event->data)->type->id,
476 ((setVariable_t)event->data)->container->id,
477 ((setVariable_t)event->data)->value);
481 static void print_pajeAddVariable(paje_event_t event)
483 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
484 if (event->timestamp == 0){
485 fprintf(tracing_file, "%d 0 %s %s %f\n",
487 ((addVariable_t)event->data)->type->id,
488 ((addVariable_t)event->data)->container->id,
489 ((addVariable_t)event->data)->value);
491 fprintf(tracing_file, "%d %lf %s %s %f\n",
494 ((addVariable_t)event->data)->type->id,
495 ((addVariable_t)event->data)->container->id,
496 ((addVariable_t)event->data)->value);
500 static void print_pajeSubVariable(paje_event_t event)
502 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
503 if (event->timestamp == 0){
504 fprintf(tracing_file, "%d 0 %s %s %f\n",
506 ((subVariable_t)event->data)->type->id,
507 ((subVariable_t)event->data)->container->id,
508 ((subVariable_t)event->data)->value);
510 fprintf(tracing_file, "%d %lf %s %s %f\n",
513 ((subVariable_t)event->data)->type->id,
514 ((subVariable_t)event->data)->container->id,
515 ((subVariable_t)event->data)->value);
519 static void print_pajeSetState(paje_event_t event)
521 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
522 if (event->timestamp == 0){
523 fprintf(tracing_file, "%d 0 %s %s %s\n",
525 ((setState_t)event->data)->type->id,
526 ((setState_t)event->data)->container->id,
527 ((setState_t)event->data)->value->id);
529 fprintf(tracing_file, "%d %lf %s %s %s\n",
532 ((setState_t)event->data)->type->id,
533 ((setState_t)event->data)->container->id,
534 ((setState_t)event->data)->value->id);
538 static void print_pajePushState(paje_event_t event)
540 XBT_DEBUG("%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\n",
544 ((pushState_t)event->data)->type->id,
545 ((pushState_t)event->data)->container->id,
546 ((pushState_t)event->data)->value->id);
548 fprintf(tracing_file, "%d %lf %s %s %s\n",
551 ((pushState_t)event->data)->type->id,
552 ((pushState_t)event->data)->container->id,
553 ((pushState_t)event->data)->value->id);
557 static void print_pajePopState(paje_event_t event)
559 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
560 if (event->timestamp == 0){
561 fprintf(tracing_file, "%d 0 %s %s\n",
563 ((popState_t)event->data)->type->id,
564 ((popState_t)event->data)->container->id);
566 fprintf(tracing_file, "%d %lf %s %s\n",
569 ((popState_t)event->data)->type->id,
570 ((popState_t)event->data)->container->id);
574 static void print_pajeStartLink(paje_event_t event)
576 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
577 if (event->timestamp == 0){
578 fprintf(tracing_file, "%d 0 %s %s %s %s %s\n",
580 ((startLink_t)event->data)->type->id,
581 ((startLink_t)event->data)->container->id,
582 ((startLink_t)event->data)->value,
583 ((startLink_t)event->data)->sourceContainer->id,
584 ((startLink_t)event->data)->key);
586 fprintf(tracing_file, "%d %lf %s %s %s %s %s\n",
589 ((startLink_t)event->data)->type->id,
590 ((startLink_t)event->data)->container->id,
591 ((startLink_t)event->data)->value,
592 ((startLink_t)event->data)->sourceContainer->id,
593 ((startLink_t)event->data)->key);
597 static void print_pajeEndLink(paje_event_t event)
599 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
600 if (event->timestamp == 0){
601 fprintf(tracing_file, "%d 0 %s %s %s %s %s\n",
603 ((endLink_t)event->data)->type->id,
604 ((endLink_t)event->data)->container->id,
605 ((endLink_t)event->data)->value,
606 ((endLink_t)event->data)->destContainer->id,
607 ((endLink_t)event->data)->key);
609 fprintf(tracing_file, "%d %lf %s %s %s %s %s\n",
612 ((endLink_t)event->data)->type->id,
613 ((endLink_t)event->data)->container->id,
614 ((endLink_t)event->data)->value,
615 ((endLink_t)event->data)->destContainer->id,
616 ((endLink_t)event->data)->key);
620 static void print_pajeNewEvent (paje_event_t event)
622 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
623 if (event->timestamp == 0){
624 fprintf(tracing_file, "%d 0 %s %s %s\n",
626 ((newEvent_t)event->data)->type->id,
627 ((newEvent_t)event->data)->container->id,
628 ((newEvent_t)event->data)->value->id);
630 fprintf(tracing_file, "%d %lf %s %s %s\n",
633 ((newEvent_t)event->data)->type->id,
634 ((newEvent_t)event->data)->container->id,
635 ((newEvent_t)event->data)->value->id);
639 static void free_paje_event (paje_event_t event)
641 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
642 switch (event->event_type){
644 xbt_free (((startLink_t)(event->data))->value);
645 xbt_free (((startLink_t)(event->data))->key);
648 xbt_free (((endLink_t)(event->data))->value);
649 xbt_free (((endLink_t)(event->data))->key);
654 xbt_free (event->data);
658 void new_pajeDefineContainerType(type_t type)
660 paje_event_t event = xbt_new0(s_paje_event_t, 1);
661 event->event_type = PAJE_DefineContainerType;
662 event->timestamp = 0;
663 event->print = print_pajeDefineContainerType;
664 event->free = free_paje_event;
665 event->data = xbt_new0(s_defineContainerType_t, 1);
666 ((defineContainerType_t)(event->data))->type = type;
668 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, event->event_type);
671 event->print (event);
675 void new_pajeDefineVariableType(type_t type)
677 paje_event_t event = xbt_new0(s_paje_event_t, 1);
678 event->event_type = PAJE_DefineVariableType;
679 event->timestamp = 0;
680 event->print = print_pajeDefineVariableType;
681 event->free = free_paje_event;
682 event->data = xbt_new0(s_defineVariableType_t, 1);
683 ((defineVariableType_t)(event->data))->type = type;
685 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, event->event_type);
688 event->print (event);
692 void new_pajeDefineStateType(type_t type)
694 paje_event_t event = xbt_new0(s_paje_event_t, 1);
695 event->event_type = PAJE_DefineStateType;
696 event->timestamp = 0;
697 event->print = print_pajeDefineStateType;
698 event->free = free_paje_event;
699 event->data = xbt_new0(s_defineStateType_t, 1);
700 ((defineStateType_t)(event->data))->type = type;
702 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, event->event_type);
705 event->print (event);
709 void new_pajeDefineEventType(type_t type)
711 paje_event_t event = xbt_new0(s_paje_event_t, 1);
712 event->event_type = PAJE_DefineEventType;
713 event->timestamp = 0;
714 event->print = print_pajeDefineEventType;
715 event->free = free_paje_event;
716 event->data = xbt_new0(s_defineEventType_t, 1);
717 ((defineEventType_t)(event->data))->type = type;
719 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, event->event_type);
722 event->print (event);
726 void new_pajeDefineLinkType(type_t type, type_t source, type_t dest)
728 paje_event_t event = xbt_new0(s_paje_event_t, 1);
729 event->event_type = PAJE_DefineLinkType;
730 event->timestamp = 0;
731 event->print = print_pajeDefineLinkType;
732 event->free = free_paje_event;
733 event->data = xbt_new0(s_defineLinkType_t, 1);
734 ((defineLinkType_t)(event->data))->type = type;
735 ((defineLinkType_t)(event->data))->source = source;
736 ((defineLinkType_t)(event->data))->dest = dest;
738 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, event->event_type);
741 event->print (event);
745 void new_pajeDefineEntityValue (val_t value)
747 paje_event_t event = xbt_new0(s_paje_event_t, 1);
748 event->event_type = PAJE_DefineEntityValue;
749 event->timestamp = 0;
750 event->print = print_pajeDefineEntityValue;
751 event->free = free_paje_event;
752 event->data = xbt_new0(s_defineEntityValue_t, 1);
753 ((defineEntityValue_t)(event->data))->value = value;
755 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, event->event_type);
758 event->print (event);
762 void new_pajeCreateContainer (container_t container)
764 paje_event_t event = xbt_new0(s_paje_event_t, 1);
765 event->event_type = PAJE_CreateContainer;
766 event->timestamp = SIMIX_get_clock();
767 event->print = print_pajeCreateContainer;
768 event->free = free_paje_event;
769 event->data = xbt_new0(s_createContainer_t, 1);
770 ((createContainer_t)(event->data))->container = container;
772 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
775 event->print (event);
779 void new_pajeDestroyContainer (container_t container)
781 paje_event_t event = xbt_new0(s_paje_event_t, 1);
782 event->event_type = PAJE_DestroyContainer;
783 event->timestamp = SIMIX_get_clock();
784 event->print = print_pajeDestroyContainer;
785 event->free = free_paje_event;
786 event->data = xbt_new0(s_destroyContainer_t, 1);
787 ((destroyContainer_t)(event->data))->container = container;
789 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
792 event->print (event);
796 void new_pajeSetVariable (double timestamp, container_t container, type_t type, double value)
798 paje_event_t event = xbt_new0(s_paje_event_t, 1);
799 event->event_type = PAJE_SetVariable;
800 event->timestamp = timestamp;
801 event->print = print_pajeSetVariable;
802 event->free = free_paje_event;
803 event->data = xbt_new0(s_setVariable_t, 1);
804 ((setVariable_t)(event->data))->type = type;
805 ((setVariable_t)(event->data))->container = container;
806 ((setVariable_t)(event->data))->value = value;
808 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
810 insert_into_buffer (event);
814 void new_pajeAddVariable (double timestamp, container_t container, type_t type, double value)
816 paje_event_t event = xbt_new0(s_paje_event_t, 1);
817 event->event_type = PAJE_AddVariable;
818 event->timestamp = timestamp;
819 event->print = print_pajeAddVariable;
820 event->free = free_paje_event;
821 event->data = xbt_new0(s_addVariable_t, 1);
822 ((addVariable_t)(event->data))->type = type;
823 ((addVariable_t)(event->data))->container = container;
824 ((addVariable_t)(event->data))->value = value;
826 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
828 insert_into_buffer (event);
831 void new_pajeSubVariable (double timestamp, container_t container, type_t type, double value)
833 paje_event_t event = xbt_new0(s_paje_event_t, 1);
834 event->event_type = PAJE_SubVariable;
835 event->timestamp = timestamp;
836 event->print = print_pajeSubVariable;
837 event->free = free_paje_event;
838 event->data = xbt_new0(s_subVariable_t, 1);
839 ((subVariable_t)(event->data))->type = type;
840 ((subVariable_t)(event->data))->container = container;
841 ((subVariable_t)(event->data))->value = value;
843 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
845 insert_into_buffer (event);
848 void new_pajeSetState (double timestamp, container_t container, type_t type, val_t value)
850 paje_event_t event = xbt_new0(s_paje_event_t, 1);
851 event->event_type = PAJE_SetState;
852 event->timestamp = timestamp;
853 event->print = print_pajeSetState;
854 event->free = free_paje_event;
855 event->data = xbt_new0(s_setState_t, 1);
856 ((setState_t)(event->data))->type = type;
857 ((setState_t)(event->data))->container = container;
858 ((setState_t)(event->data))->value = value;
860 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
862 insert_into_buffer (event);
866 void new_pajePushState (double timestamp, container_t container, type_t type, val_t value)
868 paje_event_t event = xbt_new0(s_paje_event_t, 1);
869 event->event_type = PAJE_PushState;
870 event->timestamp = timestamp;
871 event->print = print_pajePushState;
872 event->free = free_paje_event;
873 event->data = xbt_new0(s_pushState_t, 1);
874 ((pushState_t)(event->data))->type = type;
875 ((pushState_t)(event->data))->container = container;
876 ((pushState_t)(event->data))->value = value;
878 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
880 insert_into_buffer (event);
884 void new_pajePopState (double timestamp, container_t container, type_t type)
886 paje_event_t event = xbt_new0(s_paje_event_t, 1);
887 event->event_type = PAJE_PopState;
888 event->timestamp = timestamp;
889 event->print = print_pajePopState;
890 event->free = free_paje_event;
891 event->data = xbt_new0(s_popState_t, 1);
892 ((popState_t)(event->data))->type = type;
893 ((popState_t)(event->data))->container = container;
895 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
897 insert_into_buffer (event);
900 void new_pajeStartLink (double timestamp, container_t container, type_t type, container_t sourceContainer, const char *value, const char *key)
902 paje_event_t event = xbt_new0(s_paje_event_t, 1);
903 event->event_type = PAJE_StartLink;
904 event->timestamp = timestamp;
905 event->print = print_pajeStartLink;
906 event->free = free_paje_event;
907 event->data = xbt_new0(s_startLink_t, 1);
908 ((startLink_t)(event->data))->type = type;
909 ((startLink_t)(event->data))->container = container;
910 ((startLink_t)(event->data))->sourceContainer = sourceContainer;
911 ((startLink_t)(event->data))->value = xbt_strdup(value);
912 ((startLink_t)(event->data))->key = xbt_strdup(key);
914 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
916 insert_into_buffer (event);
919 void new_pajeEndLink (double timestamp, container_t container, type_t type, container_t destContainer, const char *value, const char *key)
921 paje_event_t event = xbt_new0(s_paje_event_t, 1);
922 event->event_type = PAJE_EndLink;
923 event->timestamp = timestamp;
924 event->print = print_pajeEndLink;
925 event->free = free_paje_event;
926 event->data = xbt_new0(s_endLink_t, 1);
927 ((endLink_t)(event->data))->type = type;
928 ((endLink_t)(event->data))->container = container;
929 ((endLink_t)(event->data))->destContainer = destContainer;
930 ((endLink_t)(event->data))->value = xbt_strdup(value);
931 ((endLink_t)(event->data))->key = xbt_strdup(key);
933 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
935 insert_into_buffer (event);
938 void new_pajeNewEvent (double timestamp, container_t container, type_t type, val_t value)
940 paje_event_t event = xbt_new0(s_paje_event_t, 1);
941 event->event_type = PAJE_NewEvent;
942 event->timestamp = timestamp;
943 event->print = print_pajeNewEvent;
944 event->free = free_paje_event;
945 event->data = xbt_new0(s_newEvent_t, 1);
946 ((newEvent_t)(event->data))->type = type;
947 ((newEvent_t)(event->data))->container = container;
948 ((newEvent_t)(event->data))->value = value;
950 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
952 insert_into_buffer (event);
955 #endif /* HAVE_TRACING */