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_assert1 (tracing_file != NULL, "Tracefile %s could not be opened for writing.", filename);
160 DEBUG1("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 DEBUG1("Filename %s is closed", filename);
175 double TRACE_last_timestamp_to_dump = 0;
176 //dumps the trace file until the timestamp TRACE_last_timestamp_to_dump
177 void TRACE_paje_dump_buffer (int force)
179 DEBUG2("%s: dump until %f. starts", __FUNCTION__, TRACE_last_timestamp_to_dump);
183 xbt_dynar_foreach(buffer, i, event){
184 event->print (event);
187 xbt_dynar_free (&buffer);
188 buffer = xbt_dynar_new (sizeof(paje_event_t), NULL);
191 while (xbt_dynar_length (buffer) > 0){
192 double head_timestamp = (*(paje_event_t*)xbt_dynar_get_ptr(buffer, 0))->timestamp;
193 if (head_timestamp > TRACE_last_timestamp_to_dump){
196 xbt_dynar_remove_at (buffer, 0, &event);
197 event->print (event);
201 DEBUG1("%s: ends", __FUNCTION__);
204 void TRACE_paje_create_header(void)
206 DEBUG0 ("Define paje header");
207 fprintf(tracing_file, "\
208 %%EventDef PajeDefineContainerType %d \n\
210 %% ContainerType string \n\
213 %%EventDef PajeDefineVariableType %d \n\
215 %% ContainerType string \n\
219 %%EventDef PajeDefineStateType %d \n\
221 %% ContainerType string \n\
224 %%EventDef PajeDefineEventType %d \n\
226 %% EntityType string \n\
230 %%EventDef PajeDefineLinkType %d \n\
232 %% ContainerType string \n\
233 %% SourceContainerType string \n\
234 %% DestContainerType string \n\
237 %%EventDef PajeDefineEntityValue %d \n\
239 %% EntityType string \n\
243 %%EventDef PajeCreateContainer %d \n\
247 %% Container string \n\
250 %%EventDef PajeDestroyContainer %d \n\
253 %% Container string \n\
255 %%EventDef PajeSetVariable %d \n\
257 %% EntityType string \n\
258 %% Container string \n\
261 %%EventDef PajeAddVariable %d \n\
263 %% EntityType string \n\
264 %% Container string \n\
267 %%EventDef PajeSubVariable %d \n\
269 %% EntityType string \n\
270 %% Container string \n\
273 %%EventDef PajeSetState %d \n\
275 %% EntityType string \n\
276 %% Container string \n\
279 %%EventDef PajePushState %d \n\
281 %% EntityType string \n\
282 %% Container string \n\
285 %%EventDef PajePopState %d \n\
287 %% EntityType string \n\
288 %% Container string \n\
290 %%EventDef PajeStartLink %d \n\
292 %% EntityType string \n\
293 %% Container string \n\
295 %% SourceContainer string \n\
298 %%EventDef PajeEndLink %d \n\
300 %% EntityType string \n\
301 %% Container string \n\
303 %% DestContainer string \n\
306 %%EventDef PajeNewEvent %d \n\
308 %% EntityType string \n\
309 %% Container string \n\
312 PAJE_DefineContainerType,
313 PAJE_DefineVariableType,
314 PAJE_DefineStateType,
315 PAJE_DefineEventType,
317 PAJE_DefineEntityValue,
318 PAJE_CreateContainer,
319 PAJE_DestroyContainer,
331 /* internal do the instrumentation module */
332 static void insert_into_buffer (paje_event_t tbi)
334 DEBUG4("%s: insert event_type=%d, timestamp=%f, buffersize=%ld)", __FUNCTION__, tbi->event_type, tbi->timestamp, xbt_dynar_length(buffer));
337 unsigned long len = xbt_dynar_length(buffer);
339 xbt_dynar_push (buffer, &tbi);
340 DEBUG1("%s: inserted at beginning", __FUNCTION__);
342 //check if last event has the same timestamp that tbi event
343 paje_event_t e2 = *(paje_event_t*)xbt_dynar_get_ptr (buffer, len-1);
344 if (e2->timestamp == tbi->timestamp){
346 DEBUG2("%s: inserted at end, pos = %ld", __FUNCTION__, len);
347 xbt_dynar_insert_at (buffer, len, &tbi);
351 for (i = 0; i < len; i++){
352 paje_event_t e1 = *(paje_event_t*)xbt_dynar_get_ptr(buffer, i);
353 if (e1->timestamp > tbi->timestamp){
354 xbt_dynar_insert_at (buffer, i, &tbi);
355 DEBUG2("%s: inserted at %d", __FUNCTION__, i);
361 xbt_dynar_push (buffer, &tbi);
362 DEBUG1("%s: inserted at end", __FUNCTION__);
367 static void print_pajeDefineContainerType(paje_event_t event)
369 DEBUG2("%s: event_type=%d", __FUNCTION__, event->event_type);
370 fprintf(tracing_file, "%d %s %s %s\n",
372 ((defineContainerType_t)event->data)->type->id,
373 ((defineContainerType_t)event->data)->type->father->id,
374 ((defineContainerType_t)event->data)->type->name);
377 static void print_pajeDefineVariableType(paje_event_t event)
379 DEBUG2("%s: event_type=%d", __FUNCTION__, event->event_type);
380 fprintf(tracing_file, "%d %s %s %s \"%s\"\n",
382 ((defineVariableType_t)event->data)->type->id,
383 ((defineVariableType_t)event->data)->type->father->id,
384 ((defineVariableType_t)event->data)->type->name,
385 ((defineVariableType_t)event->data)->type->color);
388 static void print_pajeDefineStateType(paje_event_t event)
390 DEBUG2("%s: event_type=%d", __FUNCTION__, event->event_type);
391 fprintf(tracing_file, "%d %s %s %s\n",
393 ((defineStateType_t)event->data)->type->id,
394 ((defineStateType_t)event->data)->type->father->id,
395 ((defineStateType_t)event->data)->type->name);
398 static void print_pajeDefineEventType(paje_event_t event)
400 DEBUG2("%s: event_type=%d", __FUNCTION__, event->event_type);
401 fprintf(tracing_file, "%d %s %s %s \"%s\"\n",
403 ((defineEventType_t)event->data)->type->id,
404 ((defineEventType_t)event->data)->type->father->id,
405 ((defineEventType_t)event->data)->type->name,
406 ((defineEventType_t)event->data)->type->color);
409 static void print_pajeDefineLinkType(paje_event_t event)
411 DEBUG2("%s: event_type=%d", __FUNCTION__, event->event_type);
412 fprintf(tracing_file, "%d %s %s %s %s %s\n",
414 ((defineLinkType_t)event->data)->type->id,
415 ((defineLinkType_t)event->data)->type->father->id,
416 ((defineLinkType_t)event->data)->source->id,
417 ((defineLinkType_t)event->data)->dest->id,
418 ((defineLinkType_t)event->data)->type->name);
421 static void print_pajeDefineEntityValue (paje_event_t event)
423 DEBUG2("%s: event_type=%d", __FUNCTION__, event->event_type);
424 fprintf(tracing_file, "%d %s %s %s \"%s\"\n",
426 ((defineEntityValue_t)event->data)->value->id,
427 ((defineEntityValue_t)event->data)->value->father->id,
428 ((defineEntityValue_t)event->data)->value->name,
429 ((defineEntityValue_t)event->data)->value->color);
432 static void print_pajeCreateContainer(paje_event_t event)
434 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
435 if (event->timestamp == 0){
436 fprintf(tracing_file, "%d 0 %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);
443 fprintf(tracing_file, "%d %lf %s %s %s %s\n",
446 ((createContainer_t)event->data)->container->id,
447 ((createContainer_t)event->data)->container->type->id,
448 ((createContainer_t)event->data)->container->father->id,
449 ((createContainer_t)event->data)->container->name);
453 static void print_pajeDestroyContainer(paje_event_t event)
455 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
456 if (event->timestamp == 0){
457 fprintf(tracing_file, "%d 0 %s %s\n",
459 ((destroyContainer_t)event->data)->container->type->id,
460 ((destroyContainer_t)event->data)->container->id);
462 fprintf(tracing_file, "%d %lf %s %s\n",
465 ((destroyContainer_t)event->data)->container->type->id,
466 ((destroyContainer_t)event->data)->container->id);
470 static void print_pajeSetVariable(paje_event_t event)
472 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
473 if (event->timestamp == 0){
474 fprintf(tracing_file, "%d 0 %s %s %f\n",
476 ((setVariable_t)event->data)->type->id,
477 ((setVariable_t)event->data)->container->id,
478 ((setVariable_t)event->data)->value);
480 fprintf(tracing_file, "%d %lf %s %s %f\n",
483 ((setVariable_t)event->data)->type->id,
484 ((setVariable_t)event->data)->container->id,
485 ((setVariable_t)event->data)->value);
489 static void print_pajeAddVariable(paje_event_t event)
491 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
492 if (event->timestamp == 0){
493 fprintf(tracing_file, "%d 0 %s %s %f\n",
495 ((addVariable_t)event->data)->type->id,
496 ((addVariable_t)event->data)->container->id,
497 ((addVariable_t)event->data)->value);
499 fprintf(tracing_file, "%d %lf %s %s %f\n",
502 ((addVariable_t)event->data)->type->id,
503 ((addVariable_t)event->data)->container->id,
504 ((addVariable_t)event->data)->value);
508 static void print_pajeSubVariable(paje_event_t event)
510 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
511 if (event->timestamp == 0){
512 fprintf(tracing_file, "%d 0 %s %s %f\n",
514 ((subVariable_t)event->data)->type->id,
515 ((subVariable_t)event->data)->container->id,
516 ((subVariable_t)event->data)->value);
518 fprintf(tracing_file, "%d %lf %s %s %f\n",
521 ((subVariable_t)event->data)->type->id,
522 ((subVariable_t)event->data)->container->id,
523 ((subVariable_t)event->data)->value);
527 static void print_pajeSetState(paje_event_t event)
529 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
530 if (event->timestamp == 0){
531 fprintf(tracing_file, "%d 0 %s %s %s\n",
533 ((setState_t)event->data)->type->id,
534 ((setState_t)event->data)->container->id,
535 ((setState_t)event->data)->value->id);
537 fprintf(tracing_file, "%d %lf %s %s %s\n",
540 ((setState_t)event->data)->type->id,
541 ((setState_t)event->data)->container->id,
542 ((setState_t)event->data)->value->id);
546 static void print_pajePushState(paje_event_t event)
548 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
549 if (event->timestamp == 0){
550 fprintf(tracing_file, "%d 0 %s %s %s\n",
552 ((pushState_t)event->data)->type->id,
553 ((pushState_t)event->data)->container->id,
554 ((pushState_t)event->data)->value->id);
556 fprintf(tracing_file, "%d %lf %s %s %s\n",
559 ((pushState_t)event->data)->type->id,
560 ((pushState_t)event->data)->container->id,
561 ((pushState_t)event->data)->value->id);
565 static void print_pajePopState(paje_event_t event)
567 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
568 if (event->timestamp == 0){
569 fprintf(tracing_file, "%d 0 %s %s\n",
571 ((popState_t)event->data)->type->id,
572 ((popState_t)event->data)->container->id);
574 fprintf(tracing_file, "%d %lf %s %s\n",
577 ((popState_t)event->data)->type->id,
578 ((popState_t)event->data)->container->id);
582 static void print_pajeStartLink(paje_event_t event)
584 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
585 if (event->timestamp == 0){
586 fprintf(tracing_file, "%d 0 %s %s %s %s %s\n",
588 ((startLink_t)event->data)->type->id,
589 ((startLink_t)event->data)->container->id,
590 ((startLink_t)event->data)->value,
591 ((startLink_t)event->data)->sourceContainer->id,
592 ((startLink_t)event->data)->key);
594 fprintf(tracing_file, "%d %lf %s %s %s %s %s\n",
597 ((startLink_t)event->data)->type->id,
598 ((startLink_t)event->data)->container->id,
599 ((startLink_t)event->data)->value,
600 ((startLink_t)event->data)->sourceContainer->id,
601 ((startLink_t)event->data)->key);
605 static void print_pajeEndLink(paje_event_t event)
607 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
608 if (event->timestamp == 0){
609 fprintf(tracing_file, "%d 0 %s %s %s %s %s\n",
611 ((endLink_t)event->data)->type->id,
612 ((endLink_t)event->data)->container->id,
613 ((endLink_t)event->data)->value,
614 ((endLink_t)event->data)->destContainer->id,
615 ((endLink_t)event->data)->key);
617 fprintf(tracing_file, "%d %lf %s %s %s %s %s\n",
620 ((endLink_t)event->data)->type->id,
621 ((endLink_t)event->data)->container->id,
622 ((endLink_t)event->data)->value,
623 ((endLink_t)event->data)->destContainer->id,
624 ((endLink_t)event->data)->key);
628 static void print_pajeNewEvent (paje_event_t event)
630 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
631 if (event->timestamp == 0){
632 fprintf(tracing_file, "%d 0 %s %s %s\n",
634 ((newEvent_t)event->data)->type->id,
635 ((newEvent_t)event->data)->container->id,
636 ((newEvent_t)event->data)->value->id);
638 fprintf(tracing_file, "%d %lf %s %s %s\n",
641 ((newEvent_t)event->data)->type->id,
642 ((newEvent_t)event->data)->container->id,
643 ((newEvent_t)event->data)->value->id);
647 static void free_paje_event (paje_event_t event)
649 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
650 if (event->event_type == PAJE_StartLink){
651 xbt_free (((startLink_t)(event->data))->value);
652 xbt_free (((startLink_t)(event->data))->key);
653 }else if (event->event_type == PAJE_EndLink){
654 xbt_free (((endLink_t)(event->data))->value);
655 xbt_free (((endLink_t)(event->data))->key);
657 xbt_free (event->data);
661 void new_pajeDefineContainerType(type_t type)
663 paje_event_t event = xbt_new0(s_paje_event_t, 1);
664 event->event_type = PAJE_DefineContainerType;
665 event->timestamp = 0;
666 event->print = print_pajeDefineContainerType;
667 event->free = free_paje_event;
668 event->data = xbt_new0(s_defineContainerType_t, 1);
669 ((defineContainerType_t)(event->data))->type = type;
671 DEBUG2("%s: event_type=%d", __FUNCTION__, event->event_type);
674 event->print (event);
678 void new_pajeDefineVariableType(type_t type)
680 paje_event_t event = xbt_new0(s_paje_event_t, 1);
681 event->event_type = PAJE_DefineVariableType;
682 event->timestamp = 0;
683 event->print = print_pajeDefineVariableType;
684 event->free = free_paje_event;
685 event->data = xbt_new0(s_defineVariableType_t, 1);
686 ((defineVariableType_t)(event->data))->type = type;
688 DEBUG2("%s: event_type=%d", __FUNCTION__, event->event_type);
691 event->print (event);
695 void new_pajeDefineStateType(type_t type)
697 paje_event_t event = xbt_new0(s_paje_event_t, 1);
698 event->event_type = PAJE_DefineStateType;
699 event->timestamp = 0;
700 event->print = print_pajeDefineStateType;
701 event->free = free_paje_event;
702 event->data = xbt_new0(s_defineStateType_t, 1);
703 ((defineStateType_t)(event->data))->type = type;
705 DEBUG2("%s: event_type=%d", __FUNCTION__, event->event_type);
708 event->print (event);
712 void new_pajeDefineEventType(type_t type)
714 paje_event_t event = xbt_new0(s_paje_event_t, 1);
715 event->event_type = PAJE_DefineEventType;
716 event->timestamp = 0;
717 event->print = print_pajeDefineEventType;
718 event->free = free_paje_event;
719 event->data = xbt_new0(s_defineEventType_t, 1);
720 ((defineEventType_t)(event->data))->type = type;
722 DEBUG2("%s: event_type=%d", __FUNCTION__, event->event_type);
725 event->print (event);
729 void new_pajeDefineLinkType(type_t type, type_t source, type_t dest)
731 paje_event_t event = xbt_new0(s_paje_event_t, 1);
732 event->event_type = PAJE_DefineLinkType;
733 event->timestamp = 0;
734 event->print = print_pajeDefineLinkType;
735 event->free = free_paje_event;
736 event->data = xbt_new0(s_defineLinkType_t, 1);
737 ((defineLinkType_t)(event->data))->type = type;
738 ((defineLinkType_t)(event->data))->source = source;
739 ((defineLinkType_t)(event->data))->dest = dest;
741 DEBUG2("%s: event_type=%d", __FUNCTION__, event->event_type);
744 event->print (event);
748 void new_pajeDefineEntityValue (val_t value)
750 paje_event_t event = xbt_new0(s_paje_event_t, 1);
751 event->event_type = PAJE_DefineEntityValue;
752 event->timestamp = 0;
753 event->print = print_pajeDefineEntityValue;
754 event->free = free_paje_event;
755 event->data = xbt_new0(s_defineEntityValue_t, 1);
756 ((defineEntityValue_t)(event->data))->value = value;
758 DEBUG2("%s: event_type=%d", __FUNCTION__, event->event_type);
761 event->print (event);
765 void new_pajeCreateContainer (container_t container)
767 paje_event_t event = xbt_new0(s_paje_event_t, 1);
768 event->event_type = PAJE_CreateContainer;
769 event->timestamp = SIMIX_get_clock();
770 event->print = print_pajeCreateContainer;
771 event->free = free_paje_event;
772 event->data = xbt_new0(s_createContainer_t, 1);
773 ((createContainer_t)(event->data))->container = container;
775 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
778 event->print (event);
782 void new_pajeDestroyContainer (container_t container)
784 paje_event_t event = xbt_new0(s_paje_event_t, 1);
785 event->event_type = PAJE_DestroyContainer;
786 event->timestamp = SIMIX_get_clock();
787 event->print = print_pajeDestroyContainer;
788 event->free = free_paje_event;
789 event->data = xbt_new0(s_destroyContainer_t, 1);
790 ((destroyContainer_t)(event->data))->container = container;
792 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
795 event->print (event);
799 void new_pajeSetVariable (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_SetVariable;
803 event->timestamp = timestamp;
804 event->print = print_pajeSetVariable;
805 event->free = free_paje_event;
806 event->data = xbt_new0(s_setVariable_t, 1);
807 ((setVariable_t)(event->data))->type = type;
808 ((setVariable_t)(event->data))->container = container;
809 ((setVariable_t)(event->data))->value = value;
811 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
813 insert_into_buffer (event);
817 void new_pajeAddVariable (double timestamp, container_t container, type_t type, double value)
819 paje_event_t event = xbt_new0(s_paje_event_t, 1);
820 event->event_type = PAJE_AddVariable;
821 event->timestamp = timestamp;
822 event->print = print_pajeAddVariable;
823 event->free = free_paje_event;
824 event->data = xbt_new0(s_addVariable_t, 1);
825 ((addVariable_t)(event->data))->type = type;
826 ((addVariable_t)(event->data))->container = container;
827 ((addVariable_t)(event->data))->value = value;
829 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
831 insert_into_buffer (event);
834 void new_pajeSubVariable (double timestamp, container_t container, type_t type, double value)
836 paje_event_t event = xbt_new0(s_paje_event_t, 1);
837 event->event_type = PAJE_SubVariable;
838 event->timestamp = timestamp;
839 event->print = print_pajeSubVariable;
840 event->free = free_paje_event;
841 event->data = xbt_new0(s_subVariable_t, 1);
842 ((subVariable_t)(event->data))->type = type;
843 ((subVariable_t)(event->data))->container = container;
844 ((subVariable_t)(event->data))->value = value;
846 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
848 insert_into_buffer (event);
851 void new_pajeSetState (double timestamp, container_t container, type_t type, val_t value)
853 paje_event_t event = xbt_new0(s_paje_event_t, 1);
854 event->event_type = PAJE_SetState;
855 event->timestamp = timestamp;
856 event->print = print_pajeSetState;
857 event->free = free_paje_event;
858 event->data = xbt_new0(s_setState_t, 1);
859 ((setState_t)(event->data))->type = type;
860 ((setState_t)(event->data))->container = container;
861 ((setState_t)(event->data))->value = value;
863 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
865 insert_into_buffer (event);
869 void new_pajePushState (double timestamp, container_t container, type_t type, val_t value)
871 paje_event_t event = xbt_new0(s_paje_event_t, 1);
872 event->event_type = PAJE_PushState;
873 event->timestamp = timestamp;
874 event->print = print_pajePushState;
875 event->free = free_paje_event;
876 event->data = xbt_new0(s_pushState_t, 1);
877 ((pushState_t)(event->data))->type = type;
878 ((pushState_t)(event->data))->container = container;
879 ((pushState_t)(event->data))->value = value;
881 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
883 insert_into_buffer (event);
887 void new_pajePopState (double timestamp, container_t container, type_t type)
889 paje_event_t event = xbt_new0(s_paje_event_t, 1);
890 event->event_type = PAJE_PopState;
891 event->timestamp = timestamp;
892 event->print = print_pajePopState;
893 event->free = free_paje_event;
894 event->data = xbt_new0(s_popState_t, 1);
895 ((popState_t)(event->data))->type = type;
896 ((popState_t)(event->data))->container = container;
898 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
900 insert_into_buffer (event);
903 void new_pajeStartLink (double timestamp, container_t container, type_t type, container_t sourceContainer, const char *value, const char *key)
905 paje_event_t event = xbt_new0(s_paje_event_t, 1);
906 event->event_type = PAJE_StartLink;
907 event->timestamp = timestamp;
908 event->print = print_pajeStartLink;
909 event->free = free_paje_event;
910 event->data = xbt_new0(s_startLink_t, 1);
911 ((startLink_t)(event->data))->type = type;
912 ((startLink_t)(event->data))->container = container;
913 ((startLink_t)(event->data))->sourceContainer = sourceContainer;
914 ((startLink_t)(event->data))->value = xbt_strdup(value);
915 ((startLink_t)(event->data))->key = xbt_strdup(key);
917 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
919 insert_into_buffer (event);
922 void new_pajeEndLink (double timestamp, container_t container, type_t type, container_t destContainer, const char *value, const char *key)
924 paje_event_t event = xbt_new0(s_paje_event_t, 1);
925 event->event_type = PAJE_EndLink;
926 event->timestamp = timestamp;
927 event->print = print_pajeEndLink;
928 event->free = free_paje_event;
929 event->data = xbt_new0(s_endLink_t, 1);
930 ((endLink_t)(event->data))->type = type;
931 ((endLink_t)(event->data))->container = container;
932 ((endLink_t)(event->data))->destContainer = destContainer;
933 ((endLink_t)(event->data))->value = xbt_strdup(value);
934 ((endLink_t)(event->data))->key = xbt_strdup(key);
936 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
938 insert_into_buffer (event);
941 void new_pajeNewEvent (double timestamp, container_t container, type_t type, val_t value)
943 paje_event_t event = xbt_new0(s_paje_event_t, 1);
944 event->event_type = PAJE_NewEvent;
945 event->timestamp = timestamp;
946 event->print = print_pajeNewEvent;
947 event->free = free_paje_event;
948 event->data = xbt_new0(s_newEvent_t, 1);
949 ((newEvent_t)(event->data))->type = type;
950 ((newEvent_t)(event->data))->container = container;
951 ((newEvent_t)(event->data))->value = value;
953 DEBUG3("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
955 insert_into_buffer (event);
958 #endif /* HAVE_TRACING */