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\
217 %%EventDef PajeDefineVariableType %d \n\
223 %%EventDef PajeDefineStateType %d \n\
228 %%EventDef PajeDefineEventType %d \n\
234 %%EventDef PajeDefineLinkType %d \n\
237 %% StartContainerType string \n\
238 %% EndContainerType string \n\
241 %%EventDef PajeDefineEntityValue %d \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 %% StartContainer string \n\
302 %%EventDef PajeEndLink %d \n\
305 %% Container string \n\
307 %% EndContainer 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=%lu)",
344 __FUNCTION__, (int)tbi->event_type, tbi->timestamp, xbt_dynar_length(buffer));
347 for (i = xbt_dynar_length(buffer); i > 0; i--) {
348 paje_event_t e1 = *(paje_event_t*)xbt_dynar_get_ptr(buffer, i - 1);
349 if (e1->timestamp <= tbi->timestamp)
352 xbt_dynar_insert_at(buffer, i, &tbi);
354 XBT_DEBUG("%s: inserted at beginning", __FUNCTION__);
356 XBT_DEBUG("%s: inserted at%s %u", __FUNCTION__,
357 (i == xbt_dynar_length(buffer) - 1 ? " end, pos =" : ""), i);
360 static void print_pajeDefineContainerType(paje_event_t event)
362 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
363 fprintf(tracing_file, "%d %s %s %s\n",
364 (int)event->event_type,
365 ((defineContainerType_t)event->data)->type->id,
366 ((defineContainerType_t)event->data)->type->father->id,
367 ((defineContainerType_t)event->data)->type->name);
370 static void print_pajeDefineVariableType(paje_event_t event)
372 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
373 fprintf(tracing_file, "%d %s %s %s \"%s\"\n",
374 (int)event->event_type,
375 ((defineVariableType_t)event->data)->type->id,
376 ((defineVariableType_t)event->data)->type->father->id,
377 ((defineVariableType_t)event->data)->type->name,
378 ((defineVariableType_t)event->data)->type->color);
381 static void print_pajeDefineStateType(paje_event_t event)
383 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
384 fprintf(tracing_file, "%d %s %s %s\n",
385 (int)event->event_type,
386 ((defineStateType_t)event->data)->type->id,
387 ((defineStateType_t)event->data)->type->father->id,
388 ((defineStateType_t)event->data)->type->name);
391 static void print_pajeDefineEventType(paje_event_t event)
393 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
394 fprintf(tracing_file, "%d %s %s %s \"%s\"\n",
395 (int)event->event_type,
396 ((defineEventType_t)event->data)->type->id,
397 ((defineEventType_t)event->data)->type->father->id,
398 ((defineEventType_t)event->data)->type->name,
399 ((defineEventType_t)event->data)->type->color);
402 static void print_pajeDefineLinkType(paje_event_t event)
404 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
405 fprintf(tracing_file, "%d %s %s %s %s %s\n",
406 (int)event->event_type,
407 ((defineLinkType_t)event->data)->type->id,
408 ((defineLinkType_t)event->data)->type->father->id,
409 ((defineLinkType_t)event->data)->source->id,
410 ((defineLinkType_t)event->data)->dest->id,
411 ((defineLinkType_t)event->data)->type->name);
414 static void print_pajeDefineEntityValue (paje_event_t event)
416 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
417 fprintf(tracing_file, "%d %s %s %s \"%s\"\n",
418 (int)event->event_type,
419 ((defineEntityValue_t)event->data)->value->id,
420 ((defineEntityValue_t)event->data)->value->father->id,
421 ((defineEntityValue_t)event->data)->value->name,
422 ((defineEntityValue_t)event->data)->value->color);
425 static void print_pajeCreateContainer(paje_event_t event)
427 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
428 if (event->timestamp == 0){
429 fprintf(tracing_file, "%d 0 %s %s %s \"%s\"\n",
430 (int)event->event_type,
431 ((createContainer_t)event->data)->container->id,
432 ((createContainer_t)event->data)->container->type->id,
433 ((createContainer_t)event->data)->container->father->id,
434 ((createContainer_t)event->data)->container->name);
436 fprintf(tracing_file, "%d %lf %s %s %s \"%s\"\n",
437 (int)event->event_type,
439 ((createContainer_t)event->data)->container->id,
440 ((createContainer_t)event->data)->container->type->id,
441 ((createContainer_t)event->data)->container->father->id,
442 ((createContainer_t)event->data)->container->name);
446 static void print_pajeDestroyContainer(paje_event_t event)
448 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
449 if (event->timestamp == 0){
450 fprintf(tracing_file, "%d 0 %s %s\n",
451 (int)event->event_type,
452 ((destroyContainer_t)event->data)->container->type->id,
453 ((destroyContainer_t)event->data)->container->id);
455 fprintf(tracing_file, "%d %lf %s %s\n",
456 (int)event->event_type,
458 ((destroyContainer_t)event->data)->container->type->id,
459 ((destroyContainer_t)event->data)->container->id);
463 static void print_pajeSetVariable(paje_event_t event)
465 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
466 if (event->timestamp == 0){
467 fprintf(tracing_file, "%d 0 %s %s %f\n",
468 (int)event->event_type,
469 ((setVariable_t)event->data)->type->id,
470 ((setVariable_t)event->data)->container->id,
471 ((setVariable_t)event->data)->value);
473 fprintf(tracing_file, "%d %lf %s %s %f\n",
474 (int)event->event_type,
476 ((setVariable_t)event->data)->type->id,
477 ((setVariable_t)event->data)->container->id,
478 ((setVariable_t)event->data)->value);
482 static void print_pajeAddVariable(paje_event_t event)
484 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
485 if (event->timestamp == 0){
486 fprintf(tracing_file, "%d 0 %s %s %f\n",
487 (int)event->event_type,
488 ((addVariable_t)event->data)->type->id,
489 ((addVariable_t)event->data)->container->id,
490 ((addVariable_t)event->data)->value);
492 fprintf(tracing_file, "%d %lf %s %s %f\n",
493 (int)event->event_type,
495 ((addVariable_t)event->data)->type->id,
496 ((addVariable_t)event->data)->container->id,
497 ((addVariable_t)event->data)->value);
501 static void print_pajeSubVariable(paje_event_t event)
503 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
504 if (event->timestamp == 0){
505 fprintf(tracing_file, "%d 0 %s %s %f\n",
506 (int)event->event_type,
507 ((subVariable_t)event->data)->type->id,
508 ((subVariable_t)event->data)->container->id,
509 ((subVariable_t)event->data)->value);
511 fprintf(tracing_file, "%d %lf %s %s %f\n",
512 (int)event->event_type,
514 ((subVariable_t)event->data)->type->id,
515 ((subVariable_t)event->data)->container->id,
516 ((subVariable_t)event->data)->value);
520 static void print_pajeSetState(paje_event_t event)
522 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
523 if (event->timestamp == 0){
524 fprintf(tracing_file, "%d 0 %s %s %s\n",
525 (int)event->event_type,
526 ((setState_t)event->data)->type->id,
527 ((setState_t)event->data)->container->id,
528 ((setState_t)event->data)->value->id);
530 fprintf(tracing_file, "%d %lf %s %s %s\n",
531 (int)event->event_type,
533 ((setState_t)event->data)->type->id,
534 ((setState_t)event->data)->container->id,
535 ((setState_t)event->data)->value->id);
539 static void print_pajePushState(paje_event_t event)
541 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
542 if (event->timestamp == 0){
543 fprintf(tracing_file, "%d 0 %s %s %s\n",
544 (int)event->event_type,
545 ((pushState_t)event->data)->type->id,
546 ((pushState_t)event->data)->container->id,
547 ((pushState_t)event->data)->value->id);
549 fprintf(tracing_file, "%d %lf %s %s %s\n",
550 (int)event->event_type,
552 ((pushState_t)event->data)->type->id,
553 ((pushState_t)event->data)->container->id,
554 ((pushState_t)event->data)->value->id);
558 static void print_pajePopState(paje_event_t event)
560 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
561 if (event->timestamp == 0){
562 fprintf(tracing_file, "%d 0 %s %s\n",
563 (int)event->event_type,
564 ((popState_t)event->data)->type->id,
565 ((popState_t)event->data)->container->id);
567 fprintf(tracing_file, "%d %lf %s %s\n",
568 (int)event->event_type,
570 ((popState_t)event->data)->type->id,
571 ((popState_t)event->data)->container->id);
575 static void print_pajeStartLink(paje_event_t event)
577 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
578 if (event->timestamp == 0){
579 fprintf(tracing_file, "%d 0 %s %s %s %s %s\n",
580 (int)event->event_type,
581 ((startLink_t)event->data)->type->id,
582 ((startLink_t)event->data)->container->id,
583 ((startLink_t)event->data)->value,
584 ((startLink_t)event->data)->sourceContainer->id,
585 ((startLink_t)event->data)->key);
587 fprintf(tracing_file, "%d %lf %s %s %s %s %s\n",
588 (int)event->event_type,
590 ((startLink_t)event->data)->type->id,
591 ((startLink_t)event->data)->container->id,
592 ((startLink_t)event->data)->value,
593 ((startLink_t)event->data)->sourceContainer->id,
594 ((startLink_t)event->data)->key);
598 static void print_pajeEndLink(paje_event_t event)
600 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
601 if (event->timestamp == 0){
602 fprintf(tracing_file, "%d 0 %s %s %s %s %s\n",
603 (int)event->event_type,
604 ((endLink_t)event->data)->type->id,
605 ((endLink_t)event->data)->container->id,
606 ((endLink_t)event->data)->value,
607 ((endLink_t)event->data)->destContainer->id,
608 ((endLink_t)event->data)->key);
610 fprintf(tracing_file, "%d %lf %s %s %s %s %s\n",
611 (int)event->event_type,
613 ((endLink_t)event->data)->type->id,
614 ((endLink_t)event->data)->container->id,
615 ((endLink_t)event->data)->value,
616 ((endLink_t)event->data)->destContainer->id,
617 ((endLink_t)event->data)->key);
621 static void print_pajeNewEvent (paje_event_t event)
623 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
624 if (event->timestamp == 0){
625 fprintf(tracing_file, "%d 0 %s %s %s\n",
626 (int)event->event_type,
627 ((newEvent_t)event->data)->type->id,
628 ((newEvent_t)event->data)->container->id,
629 ((newEvent_t)event->data)->value->id);
631 fprintf(tracing_file, "%d %lf %s %s %s\n",
632 (int)event->event_type,
634 ((newEvent_t)event->data)->type->id,
635 ((newEvent_t)event->data)->container->id,
636 ((newEvent_t)event->data)->value->id);
640 static void free_paje_event (paje_event_t event)
642 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
643 switch (event->event_type){
645 xbt_free (((startLink_t)(event->data))->value);
646 xbt_free (((startLink_t)(event->data))->key);
649 xbt_free (((endLink_t)(event->data))->value);
650 xbt_free (((endLink_t)(event->data))->key);
655 xbt_free (event->data);
659 void new_pajeDefineContainerType(type_t type)
661 paje_event_t event = xbt_new0(s_paje_event_t, 1);
662 event->event_type = PAJE_DefineContainerType;
663 event->timestamp = 0;
664 event->print = print_pajeDefineContainerType;
665 event->free = free_paje_event;
666 event->data = xbt_new0(s_defineContainerType_t, 1);
667 ((defineContainerType_t)(event->data))->type = type;
669 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
672 event->print (event);
676 void new_pajeDefineVariableType(type_t type)
678 paje_event_t event = xbt_new0(s_paje_event_t, 1);
679 event->event_type = PAJE_DefineVariableType;
680 event->timestamp = 0;
681 event->print = print_pajeDefineVariableType;
682 event->free = free_paje_event;
683 event->data = xbt_new0(s_defineVariableType_t, 1);
684 ((defineVariableType_t)(event->data))->type = type;
686 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
689 event->print (event);
693 void new_pajeDefineStateType(type_t type)
695 paje_event_t event = xbt_new0(s_paje_event_t, 1);
696 event->event_type = PAJE_DefineStateType;
697 event->timestamp = 0;
698 event->print = print_pajeDefineStateType;
699 event->free = free_paje_event;
700 event->data = xbt_new0(s_defineStateType_t, 1);
701 ((defineStateType_t)(event->data))->type = type;
703 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
706 event->print (event);
710 void new_pajeDefineEventType(type_t type)
712 paje_event_t event = xbt_new0(s_paje_event_t, 1);
713 event->event_type = PAJE_DefineEventType;
714 event->timestamp = 0;
715 event->print = print_pajeDefineEventType;
716 event->free = free_paje_event;
717 event->data = xbt_new0(s_defineEventType_t, 1);
718 ((defineEventType_t)(event->data))->type = type;
720 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
723 event->print (event);
727 void new_pajeDefineLinkType(type_t type, type_t source, type_t dest)
729 paje_event_t event = xbt_new0(s_paje_event_t, 1);
730 event->event_type = PAJE_DefineLinkType;
731 event->timestamp = 0;
732 event->print = print_pajeDefineLinkType;
733 event->free = free_paje_event;
734 event->data = xbt_new0(s_defineLinkType_t, 1);
735 ((defineLinkType_t)(event->data))->type = type;
736 ((defineLinkType_t)(event->data))->source = source;
737 ((defineLinkType_t)(event->data))->dest = dest;
739 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
742 event->print (event);
746 void new_pajeDefineEntityValue (val_t value)
748 paje_event_t event = xbt_new0(s_paje_event_t, 1);
749 event->event_type = PAJE_DefineEntityValue;
750 event->timestamp = 0;
751 event->print = print_pajeDefineEntityValue;
752 event->free = free_paje_event;
753 event->data = xbt_new0(s_defineEntityValue_t, 1);
754 ((defineEntityValue_t)(event->data))->value = value;
756 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
759 event->print (event);
763 void new_pajeCreateContainer (container_t container)
765 paje_event_t event = xbt_new0(s_paje_event_t, 1);
766 event->event_type = PAJE_CreateContainer;
767 event->timestamp = SIMIX_get_clock();
768 event->print = print_pajeCreateContainer;
769 event->free = free_paje_event;
770 event->data = xbt_new0(s_createContainer_t, 1);
771 ((createContainer_t)(event->data))->container = container;
773 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
776 event->print (event);
780 void new_pajeDestroyContainer (container_t container)
782 paje_event_t event = xbt_new0(s_paje_event_t, 1);
783 event->event_type = PAJE_DestroyContainer;
784 event->timestamp = SIMIX_get_clock();
785 event->print = print_pajeDestroyContainer;
786 event->free = free_paje_event;
787 event->data = xbt_new0(s_destroyContainer_t, 1);
788 ((destroyContainer_t)(event->data))->container = container;
790 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
793 event->print (event);
797 void new_pajeSetVariable (double timestamp, container_t container, type_t type, double value)
799 paje_event_t event = xbt_new0(s_paje_event_t, 1);
800 event->event_type = PAJE_SetVariable;
801 event->timestamp = timestamp;
802 event->print = print_pajeSetVariable;
803 event->free = free_paje_event;
804 event->data = xbt_new0(s_setVariable_t, 1);
805 ((setVariable_t)(event->data))->type = type;
806 ((setVariable_t)(event->data))->container = container;
807 ((setVariable_t)(event->data))->value = value;
809 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
811 insert_into_buffer (event);
815 void new_pajeAddVariable (double timestamp, container_t container, type_t type, double value)
817 paje_event_t event = xbt_new0(s_paje_event_t, 1);
818 event->event_type = PAJE_AddVariable;
819 event->timestamp = timestamp;
820 event->print = print_pajeAddVariable;
821 event->free = free_paje_event;
822 event->data = xbt_new0(s_addVariable_t, 1);
823 ((addVariable_t)(event->data))->type = type;
824 ((addVariable_t)(event->data))->container = container;
825 ((addVariable_t)(event->data))->value = value;
827 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
829 insert_into_buffer (event);
832 void new_pajeSubVariable (double timestamp, container_t container, type_t type, double value)
834 paje_event_t event = xbt_new0(s_paje_event_t, 1);
835 event->event_type = PAJE_SubVariable;
836 event->timestamp = timestamp;
837 event->print = print_pajeSubVariable;
838 event->free = free_paje_event;
839 event->data = xbt_new0(s_subVariable_t, 1);
840 ((subVariable_t)(event->data))->type = type;
841 ((subVariable_t)(event->data))->container = container;
842 ((subVariable_t)(event->data))->value = value;
844 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
846 insert_into_buffer (event);
849 void new_pajeSetState (double timestamp, container_t container, type_t type, val_t value)
851 paje_event_t event = xbt_new0(s_paje_event_t, 1);
852 event->event_type = PAJE_SetState;
853 event->timestamp = timestamp;
854 event->print = print_pajeSetState;
855 event->free = free_paje_event;
856 event->data = xbt_new0(s_setState_t, 1);
857 ((setState_t)(event->data))->type = type;
858 ((setState_t)(event->data))->container = container;
859 ((setState_t)(event->data))->value = value;
861 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
863 insert_into_buffer (event);
867 void new_pajePushState (double timestamp, container_t container, type_t type, val_t value)
869 paje_event_t event = xbt_new0(s_paje_event_t, 1);
870 event->event_type = PAJE_PushState;
871 event->timestamp = timestamp;
872 event->print = print_pajePushState;
873 event->free = free_paje_event;
874 event->data = xbt_new0(s_pushState_t, 1);
875 ((pushState_t)(event->data))->type = type;
876 ((pushState_t)(event->data))->container = container;
877 ((pushState_t)(event->data))->value = value;
879 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
881 insert_into_buffer (event);
885 void new_pajePopState (double timestamp, container_t container, type_t type)
887 paje_event_t event = xbt_new0(s_paje_event_t, 1);
888 event->event_type = PAJE_PopState;
889 event->timestamp = timestamp;
890 event->print = print_pajePopState;
891 event->free = free_paje_event;
892 event->data = xbt_new0(s_popState_t, 1);
893 ((popState_t)(event->data))->type = type;
894 ((popState_t)(event->data))->container = container;
896 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
898 insert_into_buffer (event);
901 void new_pajeStartLink (double timestamp, container_t container, type_t type, container_t sourceContainer, const char *value, const char *key)
903 paje_event_t event = xbt_new0(s_paje_event_t, 1);
904 event->event_type = PAJE_StartLink;
905 event->timestamp = timestamp;
906 event->print = print_pajeStartLink;
907 event->free = free_paje_event;
908 event->data = xbt_new0(s_startLink_t, 1);
909 ((startLink_t)(event->data))->type = type;
910 ((startLink_t)(event->data))->container = container;
911 ((startLink_t)(event->data))->sourceContainer = sourceContainer;
912 ((startLink_t)(event->data))->value = xbt_strdup(value);
913 ((startLink_t)(event->data))->key = xbt_strdup(key);
915 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
917 insert_into_buffer (event);
920 void new_pajeEndLink (double timestamp, container_t container, type_t type, container_t destContainer, const char *value, const char *key)
922 paje_event_t event = xbt_new0(s_paje_event_t, 1);
923 event->event_type = PAJE_EndLink;
924 event->timestamp = timestamp;
925 event->print = print_pajeEndLink;
926 event->free = free_paje_event;
927 event->data = xbt_new0(s_endLink_t, 1);
928 ((endLink_t)(event->data))->type = type;
929 ((endLink_t)(event->data))->container = container;
930 ((endLink_t)(event->data))->destContainer = destContainer;
931 ((endLink_t)(event->data))->value = xbt_strdup(value);
932 ((endLink_t)(event->data))->key = xbt_strdup(key);
934 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
936 insert_into_buffer (event);
939 void new_pajeNewEvent (double timestamp, container_t container, type_t type, val_t value)
941 paje_event_t event = xbt_new0(s_paje_event_t, 1);
942 event->event_type = PAJE_NewEvent;
943 event->timestamp = timestamp;
944 event->print = print_pajeNewEvent;
945 event->free = free_paje_event;
946 event->data = xbt_new0(s_newEvent_t, 1);
947 ((newEvent_t)(event->data))->type = type;
948 ((newEvent_t)(event->data))->container = container;
949 ((newEvent_t)(event->data))->value = value;
951 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
953 insert_into_buffer (event);
956 #endif /* HAVE_TRACING */