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_DEBUG("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 XBT_DEBUG("%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 XBT_DEBUG("%s: ends", __FUNCTION__);
204 void TRACE_paje_create_header(void)
206 XBT_DEBUG ("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 if (TRACE_buffer() == 0){
339 XBT_DEBUG("%s: insert event_type=%d, timestamp=%f, buffersize=%ld)", __FUNCTION__, tbi->event_type, tbi->timestamp, xbt_dynar_length(buffer));
342 unsigned long len = xbt_dynar_length(buffer);
344 xbt_dynar_push (buffer, &tbi);
345 XBT_DEBUG("%s: inserted at beginning", __FUNCTION__);
347 //check if last event has the same timestamp that tbi event
348 paje_event_t e2 = *(paje_event_t*)xbt_dynar_get_ptr (buffer, len-1);
349 if (e2->timestamp == tbi->timestamp){
351 XBT_DEBUG("%s: inserted at end, pos = %ld", __FUNCTION__, len);
352 xbt_dynar_insert_at (buffer, len, &tbi);
356 for (i = 0; i < len; i++){
357 paje_event_t e1 = *(paje_event_t*)xbt_dynar_get_ptr(buffer, i);
358 if (e1->timestamp > tbi->timestamp){
359 xbt_dynar_insert_at (buffer, i, &tbi);
360 XBT_DEBUG("%s: inserted at %d", __FUNCTION__, i);
366 xbt_dynar_push (buffer, &tbi);
367 XBT_DEBUG("%s: inserted at end", __FUNCTION__);
372 static void print_pajeDefineContainerType(paje_event_t event)
374 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, event->event_type);
375 fprintf(tracing_file, "%d %s %s %s\n",
377 ((defineContainerType_t)event->data)->type->id,
378 ((defineContainerType_t)event->data)->type->father->id,
379 ((defineContainerType_t)event->data)->type->name);
382 static void print_pajeDefineVariableType(paje_event_t event)
384 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, event->event_type);
385 fprintf(tracing_file, "%d %s %s %s \"%s\"\n",
387 ((defineVariableType_t)event->data)->type->id,
388 ((defineVariableType_t)event->data)->type->father->id,
389 ((defineVariableType_t)event->data)->type->name,
390 ((defineVariableType_t)event->data)->type->color);
393 static void print_pajeDefineStateType(paje_event_t event)
395 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, event->event_type);
396 fprintf(tracing_file, "%d %s %s %s\n",
398 ((defineStateType_t)event->data)->type->id,
399 ((defineStateType_t)event->data)->type->father->id,
400 ((defineStateType_t)event->data)->type->name);
403 static void print_pajeDefineEventType(paje_event_t event)
405 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, event->event_type);
406 fprintf(tracing_file, "%d %s %s %s \"%s\"\n",
408 ((defineEventType_t)event->data)->type->id,
409 ((defineEventType_t)event->data)->type->father->id,
410 ((defineEventType_t)event->data)->type->name,
411 ((defineEventType_t)event->data)->type->color);
414 static void print_pajeDefineLinkType(paje_event_t event)
416 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, event->event_type);
417 fprintf(tracing_file, "%d %s %s %s %s %s\n",
419 ((defineLinkType_t)event->data)->type->id,
420 ((defineLinkType_t)event->data)->type->father->id,
421 ((defineLinkType_t)event->data)->source->id,
422 ((defineLinkType_t)event->data)->dest->id,
423 ((defineLinkType_t)event->data)->type->name);
426 static void print_pajeDefineEntityValue (paje_event_t event)
428 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, event->event_type);
429 fprintf(tracing_file, "%d %s %s %s \"%s\"\n",
431 ((defineEntityValue_t)event->data)->value->id,
432 ((defineEntityValue_t)event->data)->value->father->id,
433 ((defineEntityValue_t)event->data)->value->name,
434 ((defineEntityValue_t)event->data)->value->color);
437 static void print_pajeCreateContainer(paje_event_t event)
439 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
440 if (event->timestamp == 0){
441 fprintf(tracing_file, "%d 0 %s %s %s %s\n",
443 ((createContainer_t)event->data)->container->id,
444 ((createContainer_t)event->data)->container->type->id,
445 ((createContainer_t)event->data)->container->father->id,
446 ((createContainer_t)event->data)->container->name);
448 fprintf(tracing_file, "%d %lf %s %s %s %s\n",
451 ((createContainer_t)event->data)->container->id,
452 ((createContainer_t)event->data)->container->type->id,
453 ((createContainer_t)event->data)->container->father->id,
454 ((createContainer_t)event->data)->container->name);
458 static void print_pajeDestroyContainer(paje_event_t event)
460 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
461 if (event->timestamp == 0){
462 fprintf(tracing_file, "%d 0 %s %s\n",
464 ((destroyContainer_t)event->data)->container->type->id,
465 ((destroyContainer_t)event->data)->container->id);
467 fprintf(tracing_file, "%d %lf %s %s\n",
470 ((destroyContainer_t)event->data)->container->type->id,
471 ((destroyContainer_t)event->data)->container->id);
475 static void print_pajeSetVariable(paje_event_t event)
477 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
478 if (event->timestamp == 0){
479 fprintf(tracing_file, "%d 0 %s %s %f\n",
481 ((setVariable_t)event->data)->type->id,
482 ((setVariable_t)event->data)->container->id,
483 ((setVariable_t)event->data)->value);
485 fprintf(tracing_file, "%d %lf %s %s %f\n",
488 ((setVariable_t)event->data)->type->id,
489 ((setVariable_t)event->data)->container->id,
490 ((setVariable_t)event->data)->value);
494 static void print_pajeAddVariable(paje_event_t event)
496 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
497 if (event->timestamp == 0){
498 fprintf(tracing_file, "%d 0 %s %s %f\n",
500 ((addVariable_t)event->data)->type->id,
501 ((addVariable_t)event->data)->container->id,
502 ((addVariable_t)event->data)->value);
504 fprintf(tracing_file, "%d %lf %s %s %f\n",
507 ((addVariable_t)event->data)->type->id,
508 ((addVariable_t)event->data)->container->id,
509 ((addVariable_t)event->data)->value);
513 static void print_pajeSubVariable(paje_event_t event)
515 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
516 if (event->timestamp == 0){
517 fprintf(tracing_file, "%d 0 %s %s %f\n",
519 ((subVariable_t)event->data)->type->id,
520 ((subVariable_t)event->data)->container->id,
521 ((subVariable_t)event->data)->value);
523 fprintf(tracing_file, "%d %lf %s %s %f\n",
526 ((subVariable_t)event->data)->type->id,
527 ((subVariable_t)event->data)->container->id,
528 ((subVariable_t)event->data)->value);
532 static void print_pajeSetState(paje_event_t event)
534 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
535 if (event->timestamp == 0){
536 fprintf(tracing_file, "%d 0 %s %s %s\n",
538 ((setState_t)event->data)->type->id,
539 ((setState_t)event->data)->container->id,
540 ((setState_t)event->data)->value->id);
542 fprintf(tracing_file, "%d %lf %s %s %s\n",
545 ((setState_t)event->data)->type->id,
546 ((setState_t)event->data)->container->id,
547 ((setState_t)event->data)->value->id);
551 static void print_pajePushState(paje_event_t event)
553 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
554 if (event->timestamp == 0){
555 fprintf(tracing_file, "%d 0 %s %s %s\n",
557 ((pushState_t)event->data)->type->id,
558 ((pushState_t)event->data)->container->id,
559 ((pushState_t)event->data)->value->id);
561 fprintf(tracing_file, "%d %lf %s %s %s\n",
564 ((pushState_t)event->data)->type->id,
565 ((pushState_t)event->data)->container->id,
566 ((pushState_t)event->data)->value->id);
570 static void print_pajePopState(paje_event_t event)
572 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
573 if (event->timestamp == 0){
574 fprintf(tracing_file, "%d 0 %s %s\n",
576 ((popState_t)event->data)->type->id,
577 ((popState_t)event->data)->container->id);
579 fprintf(tracing_file, "%d %lf %s %s\n",
582 ((popState_t)event->data)->type->id,
583 ((popState_t)event->data)->container->id);
587 static void print_pajeStartLink(paje_event_t event)
589 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
590 if (event->timestamp == 0){
591 fprintf(tracing_file, "%d 0 %s %s %s %s %s\n",
593 ((startLink_t)event->data)->type->id,
594 ((startLink_t)event->data)->container->id,
595 ((startLink_t)event->data)->value,
596 ((startLink_t)event->data)->sourceContainer->id,
597 ((startLink_t)event->data)->key);
599 fprintf(tracing_file, "%d %lf %s %s %s %s %s\n",
602 ((startLink_t)event->data)->type->id,
603 ((startLink_t)event->data)->container->id,
604 ((startLink_t)event->data)->value,
605 ((startLink_t)event->data)->sourceContainer->id,
606 ((startLink_t)event->data)->key);
610 static void print_pajeEndLink(paje_event_t event)
612 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
613 if (event->timestamp == 0){
614 fprintf(tracing_file, "%d 0 %s %s %s %s %s\n",
616 ((endLink_t)event->data)->type->id,
617 ((endLink_t)event->data)->container->id,
618 ((endLink_t)event->data)->value,
619 ((endLink_t)event->data)->destContainer->id,
620 ((endLink_t)event->data)->key);
622 fprintf(tracing_file, "%d %lf %s %s %s %s %s\n",
625 ((endLink_t)event->data)->type->id,
626 ((endLink_t)event->data)->container->id,
627 ((endLink_t)event->data)->value,
628 ((endLink_t)event->data)->destContainer->id,
629 ((endLink_t)event->data)->key);
633 static void print_pajeNewEvent (paje_event_t event)
635 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
636 if (event->timestamp == 0){
637 fprintf(tracing_file, "%d 0 %s %s %s\n",
639 ((newEvent_t)event->data)->type->id,
640 ((newEvent_t)event->data)->container->id,
641 ((newEvent_t)event->data)->value->id);
643 fprintf(tracing_file, "%d %lf %s %s %s\n",
646 ((newEvent_t)event->data)->type->id,
647 ((newEvent_t)event->data)->container->id,
648 ((newEvent_t)event->data)->value->id);
652 static void free_paje_event (paje_event_t event)
654 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
655 if (event->event_type == PAJE_StartLink){
656 xbt_free (((startLink_t)(event->data))->value);
657 xbt_free (((startLink_t)(event->data))->key);
658 }else if (event->event_type == PAJE_EndLink){
659 xbt_free (((endLink_t)(event->data))->value);
660 xbt_free (((endLink_t)(event->data))->key);
662 xbt_free (event->data);
666 void new_pajeDefineContainerType(type_t type)
668 paje_event_t event = xbt_new0(s_paje_event_t, 1);
669 event->event_type = PAJE_DefineContainerType;
670 event->timestamp = 0;
671 event->print = print_pajeDefineContainerType;
672 event->free = free_paje_event;
673 event->data = xbt_new0(s_defineContainerType_t, 1);
674 ((defineContainerType_t)(event->data))->type = type;
676 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, event->event_type);
679 event->print (event);
683 void new_pajeDefineVariableType(type_t type)
685 paje_event_t event = xbt_new0(s_paje_event_t, 1);
686 event->event_type = PAJE_DefineVariableType;
687 event->timestamp = 0;
688 event->print = print_pajeDefineVariableType;
689 event->free = free_paje_event;
690 event->data = xbt_new0(s_defineVariableType_t, 1);
691 ((defineVariableType_t)(event->data))->type = type;
693 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, event->event_type);
696 event->print (event);
700 void new_pajeDefineStateType(type_t type)
702 paje_event_t event = xbt_new0(s_paje_event_t, 1);
703 event->event_type = PAJE_DefineStateType;
704 event->timestamp = 0;
705 event->print = print_pajeDefineStateType;
706 event->free = free_paje_event;
707 event->data = xbt_new0(s_defineStateType_t, 1);
708 ((defineStateType_t)(event->data))->type = type;
710 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, event->event_type);
713 event->print (event);
717 void new_pajeDefineEventType(type_t type)
719 paje_event_t event = xbt_new0(s_paje_event_t, 1);
720 event->event_type = PAJE_DefineEventType;
721 event->timestamp = 0;
722 event->print = print_pajeDefineEventType;
723 event->free = free_paje_event;
724 event->data = xbt_new0(s_defineEventType_t, 1);
725 ((defineEventType_t)(event->data))->type = type;
727 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, event->event_type);
730 event->print (event);
734 void new_pajeDefineLinkType(type_t type, type_t source, type_t dest)
736 paje_event_t event = xbt_new0(s_paje_event_t, 1);
737 event->event_type = PAJE_DefineLinkType;
738 event->timestamp = 0;
739 event->print = print_pajeDefineLinkType;
740 event->free = free_paje_event;
741 event->data = xbt_new0(s_defineLinkType_t, 1);
742 ((defineLinkType_t)(event->data))->type = type;
743 ((defineLinkType_t)(event->data))->source = source;
744 ((defineLinkType_t)(event->data))->dest = dest;
746 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, event->event_type);
749 event->print (event);
753 void new_pajeDefineEntityValue (val_t value)
755 paje_event_t event = xbt_new0(s_paje_event_t, 1);
756 event->event_type = PAJE_DefineEntityValue;
757 event->timestamp = 0;
758 event->print = print_pajeDefineEntityValue;
759 event->free = free_paje_event;
760 event->data = xbt_new0(s_defineEntityValue_t, 1);
761 ((defineEntityValue_t)(event->data))->value = value;
763 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, event->event_type);
766 event->print (event);
770 void new_pajeCreateContainer (container_t container)
772 paje_event_t event = xbt_new0(s_paje_event_t, 1);
773 event->event_type = PAJE_CreateContainer;
774 event->timestamp = SIMIX_get_clock();
775 event->print = print_pajeCreateContainer;
776 event->free = free_paje_event;
777 event->data = xbt_new0(s_createContainer_t, 1);
778 ((createContainer_t)(event->data))->container = container;
780 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
783 event->print (event);
787 void new_pajeDestroyContainer (container_t container)
789 paje_event_t event = xbt_new0(s_paje_event_t, 1);
790 event->event_type = PAJE_DestroyContainer;
791 event->timestamp = SIMIX_get_clock();
792 event->print = print_pajeDestroyContainer;
793 event->free = free_paje_event;
794 event->data = xbt_new0(s_destroyContainer_t, 1);
795 ((destroyContainer_t)(event->data))->container = container;
797 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
800 event->print (event);
804 void new_pajeSetVariable (double timestamp, container_t container, type_t type, double value)
806 paje_event_t event = xbt_new0(s_paje_event_t, 1);
807 event->event_type = PAJE_SetVariable;
808 event->timestamp = timestamp;
809 event->print = print_pajeSetVariable;
810 event->free = free_paje_event;
811 event->data = xbt_new0(s_setVariable_t, 1);
812 ((setVariable_t)(event->data))->type = type;
813 ((setVariable_t)(event->data))->container = container;
814 ((setVariable_t)(event->data))->value = value;
816 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
818 insert_into_buffer (event);
822 void new_pajeAddVariable (double timestamp, container_t container, type_t type, double value)
824 paje_event_t event = xbt_new0(s_paje_event_t, 1);
825 event->event_type = PAJE_AddVariable;
826 event->timestamp = timestamp;
827 event->print = print_pajeAddVariable;
828 event->free = free_paje_event;
829 event->data = xbt_new0(s_addVariable_t, 1);
830 ((addVariable_t)(event->data))->type = type;
831 ((addVariable_t)(event->data))->container = container;
832 ((addVariable_t)(event->data))->value = value;
834 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
836 insert_into_buffer (event);
839 void new_pajeSubVariable (double timestamp, container_t container, type_t type, double value)
841 paje_event_t event = xbt_new0(s_paje_event_t, 1);
842 event->event_type = PAJE_SubVariable;
843 event->timestamp = timestamp;
844 event->print = print_pajeSubVariable;
845 event->free = free_paje_event;
846 event->data = xbt_new0(s_subVariable_t, 1);
847 ((subVariable_t)(event->data))->type = type;
848 ((subVariable_t)(event->data))->container = container;
849 ((subVariable_t)(event->data))->value = value;
851 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
853 insert_into_buffer (event);
856 void new_pajeSetState (double timestamp, container_t container, type_t type, val_t value)
858 paje_event_t event = xbt_new0(s_paje_event_t, 1);
859 event->event_type = PAJE_SetState;
860 event->timestamp = timestamp;
861 event->print = print_pajeSetState;
862 event->free = free_paje_event;
863 event->data = xbt_new0(s_setState_t, 1);
864 ((setState_t)(event->data))->type = type;
865 ((setState_t)(event->data))->container = container;
866 ((setState_t)(event->data))->value = value;
868 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
870 insert_into_buffer (event);
874 void new_pajePushState (double timestamp, container_t container, type_t type, val_t value)
876 paje_event_t event = xbt_new0(s_paje_event_t, 1);
877 event->event_type = PAJE_PushState;
878 event->timestamp = timestamp;
879 event->print = print_pajePushState;
880 event->free = free_paje_event;
881 event->data = xbt_new0(s_pushState_t, 1);
882 ((pushState_t)(event->data))->type = type;
883 ((pushState_t)(event->data))->container = container;
884 ((pushState_t)(event->data))->value = value;
886 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
888 insert_into_buffer (event);
892 void new_pajePopState (double timestamp, container_t container, type_t type)
894 paje_event_t event = xbt_new0(s_paje_event_t, 1);
895 event->event_type = PAJE_PopState;
896 event->timestamp = timestamp;
897 event->print = print_pajePopState;
898 event->free = free_paje_event;
899 event->data = xbt_new0(s_popState_t, 1);
900 ((popState_t)(event->data))->type = type;
901 ((popState_t)(event->data))->container = container;
903 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
905 insert_into_buffer (event);
908 void new_pajeStartLink (double timestamp, container_t container, type_t type, container_t sourceContainer, const char *value, const char *key)
910 paje_event_t event = xbt_new0(s_paje_event_t, 1);
911 event->event_type = PAJE_StartLink;
912 event->timestamp = timestamp;
913 event->print = print_pajeStartLink;
914 event->free = free_paje_event;
915 event->data = xbt_new0(s_startLink_t, 1);
916 ((startLink_t)(event->data))->type = type;
917 ((startLink_t)(event->data))->container = container;
918 ((startLink_t)(event->data))->sourceContainer = sourceContainer;
919 ((startLink_t)(event->data))->value = xbt_strdup(value);
920 ((startLink_t)(event->data))->key = xbt_strdup(key);
922 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
924 insert_into_buffer (event);
927 void new_pajeEndLink (double timestamp, container_t container, type_t type, container_t destContainer, const char *value, const char *key)
929 paje_event_t event = xbt_new0(s_paje_event_t, 1);
930 event->event_type = PAJE_EndLink;
931 event->timestamp = timestamp;
932 event->print = print_pajeEndLink;
933 event->free = free_paje_event;
934 event->data = xbt_new0(s_endLink_t, 1);
935 ((endLink_t)(event->data))->type = type;
936 ((endLink_t)(event->data))->container = container;
937 ((endLink_t)(event->data))->destContainer = destContainer;
938 ((endLink_t)(event->data))->value = xbt_strdup(value);
939 ((endLink_t)(event->data))->key = xbt_strdup(key);
941 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
943 insert_into_buffer (event);
946 void new_pajeNewEvent (double timestamp, container_t container, type_t type, val_t value)
948 paje_event_t event = xbt_new0(s_paje_event_t, 1);
949 event->event_type = PAJE_NewEvent;
950 event->timestamp = timestamp;
951 event->print = print_pajeNewEvent;
952 event->free = free_paje_event;
953 event->data = xbt_new0(s_newEvent_t, 1);
954 ((newEvent_t)(event->data))->type = type;
955 ((newEvent_t)(event->data))->container = container;
956 ((newEvent_t)(event->data))->value = value;
958 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
960 insert_into_buffer (event);
963 #endif /* HAVE_TRACING */