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 xbt_assert (tracing_file != NULL, "Tracefile %s could not be opened for writing.", filename);
160 XBT_DEBUG("Filename %s is open for writing", filename);
163 TRACE_paje_create_header();
165 buffer = xbt_dynar_new (sizeof(paje_event_t), NULL);
168 void TRACE_paje_end(void)
170 fclose(tracing_file);
171 char *filename = TRACE_get_filename();
172 xbt_dynar_free (&buffer);
173 XBT_DEBUG("Filename %s is closed", filename);
176 double TRACE_last_timestamp_to_dump = 0;
177 //dumps the trace file until the timestamp TRACE_last_timestamp_to_dump
178 void TRACE_paje_dump_buffer (int force)
180 if (!TRACE_is_enabled()) return;
181 XBT_DEBUG("%s: dump until %f. starts", __FUNCTION__, TRACE_last_timestamp_to_dump);
185 xbt_dynar_foreach(buffer, i, event){
186 event->print (event);
189 xbt_dynar_free (&buffer);
190 buffer = xbt_dynar_new (sizeof(paje_event_t), NULL);
193 while (!xbt_dynar_is_empty(buffer)){
194 double head_timestamp = (*(paje_event_t*)xbt_dynar_get_ptr(buffer, 0))->timestamp;
195 if (head_timestamp > TRACE_last_timestamp_to_dump){
198 xbt_dynar_remove_at (buffer, 0, &event);
199 event->print (event);
203 XBT_DEBUG("%s: ends", __FUNCTION__);
206 void TRACE_paje_create_header(void)
208 XBT_DEBUG ("Define paje header");
209 fprintf(tracing_file, "\
210 %%EventDef PajeDefineContainerType %d \n\
212 %% ContainerType string \n\
215 %%EventDef PajeDefineVariableType %d \n\
217 %% ContainerType string \n\
221 %%EventDef PajeDefineStateType %d \n\
223 %% ContainerType string \n\
226 %%EventDef PajeDefineEventType %d \n\
228 %% ContainerType string \n\
232 %%EventDef PajeDefineLinkType %d \n\
234 %% ContainerType string \n\
235 %% SourceContainerType string \n\
236 %% DestContainerType string \n\
239 %%EventDef PajeDefineEntityValue %d \n\
241 %% EntityType string \n\
245 %%EventDef PajeCreateContainer %d \n\
249 %% Container string \n\
252 %%EventDef PajeDestroyContainer %d \n\
257 %%EventDef PajeSetVariable %d \n\
260 %% Container string \n\
263 %%EventDef PajeAddVariable %d \n\
266 %% Container string \n\
269 %%EventDef PajeSubVariable %d \n\
272 %% Container string \n\
275 %%EventDef PajeSetState %d \n\
278 %% Container string \n\
281 %%EventDef PajePushState %d \n\
284 %% Container string \n\
287 %%EventDef PajePopState %d \n\
290 %% Container string \n\
292 %%EventDef PajeStartLink %d \n\
295 %% Container string \n\
297 %% SourceContainer string \n\
300 %%EventDef PajeEndLink %d \n\
303 %% Container string \n\
305 %% DestContainer string \n\
308 %%EventDef PajeNewEvent %d \n\
311 %% Container string \n\
314 PAJE_DefineContainerType,
315 PAJE_DefineVariableType,
316 PAJE_DefineStateType,
317 PAJE_DefineEventType,
319 PAJE_DefineEntityValue,
320 PAJE_CreateContainer,
321 PAJE_DestroyContainer,
333 /* internal do the instrumentation module */
334 static void insert_into_buffer (paje_event_t tbi)
336 if (TRACE_buffer() == 0){
341 XBT_DEBUG("%s: insert event_type=%d, timestamp=%f, buffersize=%ld)", __FUNCTION__, tbi->event_type, tbi->timestamp, xbt_dynar_length(buffer));
344 for (i = xbt_dynar_length(buffer); i > 0; i--) {
345 paje_event_t e1 = *(paje_event_t*)xbt_dynar_get_ptr(buffer, i - 1);
346 if (e1->timestamp <= tbi->timestamp)
349 xbt_dynar_insert_at(buffer, i, &tbi);
351 XBT_DEBUG("%s: inserted at beginning", __FUNCTION__);
353 XBT_DEBUG("%s: inserted at%s %d", __FUNCTION__,
354 (i == xbt_dynar_length(buffer) - 1 ? " end, pos =" : ""), i);
357 static void print_pajeDefineContainerType(paje_event_t event)
359 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, event->event_type);
360 fprintf(tracing_file, "%d %s %s %s\n",
362 ((defineContainerType_t)event->data)->type->id,
363 ((defineContainerType_t)event->data)->type->father->id,
364 ((defineContainerType_t)event->data)->type->name);
367 static void print_pajeDefineVariableType(paje_event_t event)
369 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, event->event_type);
370 fprintf(tracing_file, "%d %s %s %s \"%s\"\n",
372 ((defineVariableType_t)event->data)->type->id,
373 ((defineVariableType_t)event->data)->type->father->id,
374 ((defineVariableType_t)event->data)->type->name,
375 ((defineVariableType_t)event->data)->type->color);
378 static void print_pajeDefineStateType(paje_event_t event)
380 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, event->event_type);
381 fprintf(tracing_file, "%d %s %s %s\n",
383 ((defineStateType_t)event->data)->type->id,
384 ((defineStateType_t)event->data)->type->father->id,
385 ((defineStateType_t)event->data)->type->name);
388 static void print_pajeDefineEventType(paje_event_t event)
390 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, event->event_type);
391 fprintf(tracing_file, "%d %s %s %s \"%s\"\n",
393 ((defineEventType_t)event->data)->type->id,
394 ((defineEventType_t)event->data)->type->father->id,
395 ((defineEventType_t)event->data)->type->name,
396 ((defineEventType_t)event->data)->type->color);
399 static void print_pajeDefineLinkType(paje_event_t event)
401 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, event->event_type);
402 fprintf(tracing_file, "%d %s %s %s %s %s\n",
404 ((defineLinkType_t)event->data)->type->id,
405 ((defineLinkType_t)event->data)->type->father->id,
406 ((defineLinkType_t)event->data)->source->id,
407 ((defineLinkType_t)event->data)->dest->id,
408 ((defineLinkType_t)event->data)->type->name);
411 static void print_pajeDefineEntityValue (paje_event_t event)
413 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, event->event_type);
414 fprintf(tracing_file, "%d %s %s %s \"%s\"\n",
416 ((defineEntityValue_t)event->data)->value->id,
417 ((defineEntityValue_t)event->data)->value->father->id,
418 ((defineEntityValue_t)event->data)->value->name,
419 ((defineEntityValue_t)event->data)->value->color);
422 static void print_pajeCreateContainer(paje_event_t event)
424 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
425 if (event->timestamp == 0){
426 fprintf(tracing_file, "%d 0 %s %s %s \"%s\"\n",
428 ((createContainer_t)event->data)->container->id,
429 ((createContainer_t)event->data)->container->type->id,
430 ((createContainer_t)event->data)->container->father->id,
431 ((createContainer_t)event->data)->container->name);
433 fprintf(tracing_file, "%d %lf %s %s %s \"%s\"\n",
436 ((createContainer_t)event->data)->container->id,
437 ((createContainer_t)event->data)->container->type->id,
438 ((createContainer_t)event->data)->container->father->id,
439 ((createContainer_t)event->data)->container->name);
443 static void print_pajeDestroyContainer(paje_event_t event)
445 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
446 if (event->timestamp == 0){
447 fprintf(tracing_file, "%d 0 %s %s\n",
449 ((destroyContainer_t)event->data)->container->type->id,
450 ((destroyContainer_t)event->data)->container->id);
452 fprintf(tracing_file, "%d %lf %s %s\n",
455 ((destroyContainer_t)event->data)->container->type->id,
456 ((destroyContainer_t)event->data)->container->id);
460 static void print_pajeSetVariable(paje_event_t event)
462 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
463 if (event->timestamp == 0){
464 fprintf(tracing_file, "%d 0 %s %s %f\n",
466 ((setVariable_t)event->data)->type->id,
467 ((setVariable_t)event->data)->container->id,
468 ((setVariable_t)event->data)->value);
470 fprintf(tracing_file, "%d %lf %s %s %f\n",
473 ((setVariable_t)event->data)->type->id,
474 ((setVariable_t)event->data)->container->id,
475 ((setVariable_t)event->data)->value);
479 static void print_pajeAddVariable(paje_event_t event)
481 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
482 if (event->timestamp == 0){
483 fprintf(tracing_file, "%d 0 %s %s %f\n",
485 ((addVariable_t)event->data)->type->id,
486 ((addVariable_t)event->data)->container->id,
487 ((addVariable_t)event->data)->value);
489 fprintf(tracing_file, "%d %lf %s %s %f\n",
492 ((addVariable_t)event->data)->type->id,
493 ((addVariable_t)event->data)->container->id,
494 ((addVariable_t)event->data)->value);
498 static void print_pajeSubVariable(paje_event_t event)
500 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
501 if (event->timestamp == 0){
502 fprintf(tracing_file, "%d 0 %s %s %f\n",
504 ((subVariable_t)event->data)->type->id,
505 ((subVariable_t)event->data)->container->id,
506 ((subVariable_t)event->data)->value);
508 fprintf(tracing_file, "%d %lf %s %s %f\n",
511 ((subVariable_t)event->data)->type->id,
512 ((subVariable_t)event->data)->container->id,
513 ((subVariable_t)event->data)->value);
517 static void print_pajeSetState(paje_event_t event)
519 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
520 if (event->timestamp == 0){
521 fprintf(tracing_file, "%d 0 %s %s %s\n",
523 ((setState_t)event->data)->type->id,
524 ((setState_t)event->data)->container->id,
525 ((setState_t)event->data)->value->id);
527 fprintf(tracing_file, "%d %lf %s %s %s\n",
530 ((setState_t)event->data)->type->id,
531 ((setState_t)event->data)->container->id,
532 ((setState_t)event->data)->value->id);
536 static void print_pajePushState(paje_event_t event)
538 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
539 if (event->timestamp == 0){
540 fprintf(tracing_file, "%d 0 %s %s %s\n",
542 ((pushState_t)event->data)->type->id,
543 ((pushState_t)event->data)->container->id,
544 ((pushState_t)event->data)->value->id);
546 fprintf(tracing_file, "%d %lf %s %s %s\n",
549 ((pushState_t)event->data)->type->id,
550 ((pushState_t)event->data)->container->id,
551 ((pushState_t)event->data)->value->id);
555 static void print_pajePopState(paje_event_t event)
557 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
558 if (event->timestamp == 0){
559 fprintf(tracing_file, "%d 0 %s %s\n",
561 ((popState_t)event->data)->type->id,
562 ((popState_t)event->data)->container->id);
564 fprintf(tracing_file, "%d %lf %s %s\n",
567 ((popState_t)event->data)->type->id,
568 ((popState_t)event->data)->container->id);
572 static void print_pajeStartLink(paje_event_t event)
574 XBT_DEBUG("%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 ((startLink_t)event->data)->type->id,
579 ((startLink_t)event->data)->container->id,
580 ((startLink_t)event->data)->value,
581 ((startLink_t)event->data)->sourceContainer->id,
582 ((startLink_t)event->data)->key);
584 fprintf(tracing_file, "%d %lf %s %s %s %s %s\n",
587 ((startLink_t)event->data)->type->id,
588 ((startLink_t)event->data)->container->id,
589 ((startLink_t)event->data)->value,
590 ((startLink_t)event->data)->sourceContainer->id,
591 ((startLink_t)event->data)->key);
595 static void print_pajeEndLink(paje_event_t event)
597 XBT_DEBUG("%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 %s %s\n",
601 ((endLink_t)event->data)->type->id,
602 ((endLink_t)event->data)->container->id,
603 ((endLink_t)event->data)->value,
604 ((endLink_t)event->data)->destContainer->id,
605 ((endLink_t)event->data)->key);
607 fprintf(tracing_file, "%d %lf %s %s %s %s %s\n",
610 ((endLink_t)event->data)->type->id,
611 ((endLink_t)event->data)->container->id,
612 ((endLink_t)event->data)->value,
613 ((endLink_t)event->data)->destContainer->id,
614 ((endLink_t)event->data)->key);
618 static void print_pajeNewEvent (paje_event_t event)
620 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
621 if (event->timestamp == 0){
622 fprintf(tracing_file, "%d 0 %s %s %s\n",
624 ((newEvent_t)event->data)->type->id,
625 ((newEvent_t)event->data)->container->id,
626 ((newEvent_t)event->data)->value->id);
628 fprintf(tracing_file, "%d %lf %s %s %s\n",
631 ((newEvent_t)event->data)->type->id,
632 ((newEvent_t)event->data)->container->id,
633 ((newEvent_t)event->data)->value->id);
637 static void free_paje_event (paje_event_t event)
639 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
640 switch (event->event_type){
642 xbt_free (((startLink_t)(event->data))->value);
643 xbt_free (((startLink_t)(event->data))->key);
646 xbt_free (((endLink_t)(event->data))->value);
647 xbt_free (((endLink_t)(event->data))->key);
650 xbt_free (event->data);
654 void new_pajeDefineContainerType(type_t type)
656 paje_event_t event = xbt_new0(s_paje_event_t, 1);
657 event->event_type = PAJE_DefineContainerType;
658 event->timestamp = 0;
659 event->print = print_pajeDefineContainerType;
660 event->free = free_paje_event;
661 event->data = xbt_new0(s_defineContainerType_t, 1);
662 ((defineContainerType_t)(event->data))->type = type;
664 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, event->event_type);
667 event->print (event);
671 void new_pajeDefineVariableType(type_t type)
673 paje_event_t event = xbt_new0(s_paje_event_t, 1);
674 event->event_type = PAJE_DefineVariableType;
675 event->timestamp = 0;
676 event->print = print_pajeDefineVariableType;
677 event->free = free_paje_event;
678 event->data = xbt_new0(s_defineVariableType_t, 1);
679 ((defineVariableType_t)(event->data))->type = type;
681 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, event->event_type);
684 event->print (event);
688 void new_pajeDefineStateType(type_t type)
690 paje_event_t event = xbt_new0(s_paje_event_t, 1);
691 event->event_type = PAJE_DefineStateType;
692 event->timestamp = 0;
693 event->print = print_pajeDefineStateType;
694 event->free = free_paje_event;
695 event->data = xbt_new0(s_defineStateType_t, 1);
696 ((defineStateType_t)(event->data))->type = type;
698 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, event->event_type);
701 event->print (event);
705 void new_pajeDefineEventType(type_t type)
707 paje_event_t event = xbt_new0(s_paje_event_t, 1);
708 event->event_type = PAJE_DefineEventType;
709 event->timestamp = 0;
710 event->print = print_pajeDefineEventType;
711 event->free = free_paje_event;
712 event->data = xbt_new0(s_defineEventType_t, 1);
713 ((defineEventType_t)(event->data))->type = type;
715 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, event->event_type);
718 event->print (event);
722 void new_pajeDefineLinkType(type_t type, type_t source, type_t dest)
724 paje_event_t event = xbt_new0(s_paje_event_t, 1);
725 event->event_type = PAJE_DefineLinkType;
726 event->timestamp = 0;
727 event->print = print_pajeDefineLinkType;
728 event->free = free_paje_event;
729 event->data = xbt_new0(s_defineLinkType_t, 1);
730 ((defineLinkType_t)(event->data))->type = type;
731 ((defineLinkType_t)(event->data))->source = source;
732 ((defineLinkType_t)(event->data))->dest = dest;
734 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, event->event_type);
737 event->print (event);
741 void new_pajeDefineEntityValue (val_t value)
743 paje_event_t event = xbt_new0(s_paje_event_t, 1);
744 event->event_type = PAJE_DefineEntityValue;
745 event->timestamp = 0;
746 event->print = print_pajeDefineEntityValue;
747 event->free = free_paje_event;
748 event->data = xbt_new0(s_defineEntityValue_t, 1);
749 ((defineEntityValue_t)(event->data))->value = value;
751 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, event->event_type);
754 event->print (event);
758 void new_pajeCreateContainer (container_t container)
760 paje_event_t event = xbt_new0(s_paje_event_t, 1);
761 event->event_type = PAJE_CreateContainer;
762 event->timestamp = SIMIX_get_clock();
763 event->print = print_pajeCreateContainer;
764 event->free = free_paje_event;
765 event->data = xbt_new0(s_createContainer_t, 1);
766 ((createContainer_t)(event->data))->container = container;
768 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
771 event->print (event);
775 void new_pajeDestroyContainer (container_t container)
777 paje_event_t event = xbt_new0(s_paje_event_t, 1);
778 event->event_type = PAJE_DestroyContainer;
779 event->timestamp = SIMIX_get_clock();
780 event->print = print_pajeDestroyContainer;
781 event->free = free_paje_event;
782 event->data = xbt_new0(s_destroyContainer_t, 1);
783 ((destroyContainer_t)(event->data))->container = container;
785 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
788 event->print (event);
792 void new_pajeSetVariable (double timestamp, container_t container, type_t type, double value)
794 paje_event_t event = xbt_new0(s_paje_event_t, 1);
795 event->event_type = PAJE_SetVariable;
796 event->timestamp = timestamp;
797 event->print = print_pajeSetVariable;
798 event->free = free_paje_event;
799 event->data = xbt_new0(s_setVariable_t, 1);
800 ((setVariable_t)(event->data))->type = type;
801 ((setVariable_t)(event->data))->container = container;
802 ((setVariable_t)(event->data))->value = value;
804 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
806 insert_into_buffer (event);
810 void new_pajeAddVariable (double timestamp, container_t container, type_t type, double value)
812 paje_event_t event = xbt_new0(s_paje_event_t, 1);
813 event->event_type = PAJE_AddVariable;
814 event->timestamp = timestamp;
815 event->print = print_pajeAddVariable;
816 event->free = free_paje_event;
817 event->data = xbt_new0(s_addVariable_t, 1);
818 ((addVariable_t)(event->data))->type = type;
819 ((addVariable_t)(event->data))->container = container;
820 ((addVariable_t)(event->data))->value = value;
822 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
824 insert_into_buffer (event);
827 void new_pajeSubVariable (double timestamp, container_t container, type_t type, double value)
829 paje_event_t event = xbt_new0(s_paje_event_t, 1);
830 event->event_type = PAJE_SubVariable;
831 event->timestamp = timestamp;
832 event->print = print_pajeSubVariable;
833 event->free = free_paje_event;
834 event->data = xbt_new0(s_subVariable_t, 1);
835 ((subVariable_t)(event->data))->type = type;
836 ((subVariable_t)(event->data))->container = container;
837 ((subVariable_t)(event->data))->value = value;
839 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
841 insert_into_buffer (event);
844 void new_pajeSetState (double timestamp, container_t container, type_t type, val_t value)
846 paje_event_t event = xbt_new0(s_paje_event_t, 1);
847 event->event_type = PAJE_SetState;
848 event->timestamp = timestamp;
849 event->print = print_pajeSetState;
850 event->free = free_paje_event;
851 event->data = xbt_new0(s_setState_t, 1);
852 ((setState_t)(event->data))->type = type;
853 ((setState_t)(event->data))->container = container;
854 ((setState_t)(event->data))->value = value;
856 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
858 insert_into_buffer (event);
862 void new_pajePushState (double timestamp, container_t container, type_t type, val_t value)
864 paje_event_t event = xbt_new0(s_paje_event_t, 1);
865 event->event_type = PAJE_PushState;
866 event->timestamp = timestamp;
867 event->print = print_pajePushState;
868 event->free = free_paje_event;
869 event->data = xbt_new0(s_pushState_t, 1);
870 ((pushState_t)(event->data))->type = type;
871 ((pushState_t)(event->data))->container = container;
872 ((pushState_t)(event->data))->value = value;
874 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
876 insert_into_buffer (event);
880 void new_pajePopState (double timestamp, container_t container, type_t type)
882 paje_event_t event = xbt_new0(s_paje_event_t, 1);
883 event->event_type = PAJE_PopState;
884 event->timestamp = timestamp;
885 event->print = print_pajePopState;
886 event->free = free_paje_event;
887 event->data = xbt_new0(s_popState_t, 1);
888 ((popState_t)(event->data))->type = type;
889 ((popState_t)(event->data))->container = container;
891 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
893 insert_into_buffer (event);
896 void new_pajeStartLink (double timestamp, container_t container, type_t type, container_t sourceContainer, const char *value, const char *key)
898 paje_event_t event = xbt_new0(s_paje_event_t, 1);
899 event->event_type = PAJE_StartLink;
900 event->timestamp = timestamp;
901 event->print = print_pajeStartLink;
902 event->free = free_paje_event;
903 event->data = xbt_new0(s_startLink_t, 1);
904 ((startLink_t)(event->data))->type = type;
905 ((startLink_t)(event->data))->container = container;
906 ((startLink_t)(event->data))->sourceContainer = sourceContainer;
907 ((startLink_t)(event->data))->value = xbt_strdup(value);
908 ((startLink_t)(event->data))->key = xbt_strdup(key);
910 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
912 insert_into_buffer (event);
915 void new_pajeEndLink (double timestamp, container_t container, type_t type, container_t destContainer, const char *value, const char *key)
917 paje_event_t event = xbt_new0(s_paje_event_t, 1);
918 event->event_type = PAJE_EndLink;
919 event->timestamp = timestamp;
920 event->print = print_pajeEndLink;
921 event->free = free_paje_event;
922 event->data = xbt_new0(s_endLink_t, 1);
923 ((endLink_t)(event->data))->type = type;
924 ((endLink_t)(event->data))->container = container;
925 ((endLink_t)(event->data))->destContainer = destContainer;
926 ((endLink_t)(event->data))->value = xbt_strdup(value);
927 ((endLink_t)(event->data))->key = xbt_strdup(key);
929 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
931 insert_into_buffer (event);
934 void new_pajeNewEvent (double timestamp, container_t container, type_t type, val_t value)
936 paje_event_t event = xbt_new0(s_paje_event_t, 1);
937 event->event_type = PAJE_NewEvent;
938 event->timestamp = timestamp;
939 event->print = print_pajeNewEvent;
940 event->free = free_paje_event;
941 event->data = xbt_new0(s_newEvent_t, 1);
942 ((newEvent_t)(event->data))->type = type;
943 ((newEvent_t)(event->data))->container = container;
944 ((newEvent_t)(event->data))->value = value;
946 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
948 insert_into_buffer (event);
951 #endif /* HAVE_TRACING */