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,
34 typedef struct paje_event *paje_event_t;
35 typedef struct paje_event {
37 e_event_type event_type;
38 void (*print) (paje_event_t event);
39 void (*free) (paje_event_t event);
43 typedef struct s_defineContainerType *defineContainerType_t;
44 typedef struct s_defineContainerType {
46 }s_defineContainerType_t;
48 typedef struct s_defineVariableType *defineVariableType_t;
49 typedef struct s_defineVariableType {
51 }s_defineVariableType_t;
53 typedef struct s_defineStateType *defineStateType_t;
54 typedef struct s_defineStateType {
58 typedef struct s_defineEventType *defineEventType_t;
59 typedef struct s_defineEventType {
63 typedef struct s_defineLinkType *defineLinkType_t;
64 typedef struct s_defineLinkType {
70 typedef struct s_defineEntityValue *defineEntityValue_t;
71 typedef struct s_defineEntityValue {
73 }s_defineEntityValue_t;
75 typedef struct s_createContainer *createContainer_t;
76 typedef struct s_createContainer {
77 container_t container;
80 typedef struct s_destroyContainer *destroyContainer_t;
81 typedef struct s_destroyContainer {
82 container_t container;
83 }s_destroyContainer_t;
85 typedef struct s_setVariable *setVariable_t;
86 typedef struct s_setVariable {
87 container_t container;
92 typedef struct s_addVariable *addVariable_t;
93 typedef struct s_addVariable {
94 container_t container;
99 typedef struct s_subVariable *subVariable_t;
100 typedef struct s_subVariable {
101 container_t container;
106 typedef struct s_setState *setState_t;
107 typedef struct s_setState {
108 container_t container;
113 typedef struct s_pushState *pushState_t;
114 typedef struct s_pushState {
115 container_t container;
120 typedef struct s_popState *popState_t;
121 typedef struct s_popState {
122 container_t container;
126 typedef struct s_resetState *resetState_t;
127 typedef struct s_resetState {
128 container_t container;
132 typedef struct s_startLink *startLink_t;
133 typedef struct s_startLink {
134 container_t container;
136 container_t sourceContainer;
141 typedef struct s_endLink *endLink_t;
142 typedef struct s_endLink {
143 container_t container;
145 container_t destContainer;
150 typedef struct s_newEvent *newEvent_t;
151 typedef struct s_newEvent {
152 container_t container;
157 static FILE *tracing_file = NULL;
159 static xbt_dynar_t buffer = NULL;
161 void TRACE_paje_start(void)
163 char *filename = TRACE_get_filename();
164 tracing_file = fopen(filename, "w");
165 if (tracing_file == NULL){
166 THROWF (system_error, 1, "Tracefile %s could not be opened for writing.", filename);
169 XBT_DEBUG("Filename %s is open for writing", filename);
172 TRACE_paje_create_header();
174 buffer = xbt_dynar_new (sizeof(paje_event_t), NULL);
177 void TRACE_paje_end(void)
179 fclose(tracing_file);
180 char *filename = TRACE_get_filename();
181 xbt_dynar_free (&buffer);
182 XBT_DEBUG("Filename %s is closed", filename);
185 double TRACE_last_timestamp_to_dump = 0;
186 //dumps the trace file until the timestamp TRACE_last_timestamp_to_dump
187 void TRACE_paje_dump_buffer (int force)
189 if (!TRACE_is_enabled()) return;
190 XBT_DEBUG("%s: dump until %f. starts", __FUNCTION__, TRACE_last_timestamp_to_dump);
194 xbt_dynar_foreach(buffer, i, event){
195 event->print (event);
198 xbt_dynar_free (&buffer);
199 buffer = xbt_dynar_new (sizeof(paje_event_t), NULL);
202 while (!xbt_dynar_is_empty(buffer)){
203 double head_timestamp = (*(paje_event_t*)xbt_dynar_get_ptr(buffer, 0))->timestamp;
204 if (head_timestamp > TRACE_last_timestamp_to_dump){
207 xbt_dynar_remove_at (buffer, 0, &event);
208 event->print (event);
212 XBT_DEBUG("%s: ends", __FUNCTION__);
215 void TRACE_paje_create_header(void)
217 XBT_DEBUG ("Define paje header");
218 fprintf(tracing_file, "\
219 %%EventDef PajeDefineContainerType %d \n\
224 %%EventDef PajeDefineVariableType %d \n\
230 %%EventDef PajeDefineStateType %d \n\
235 %%EventDef PajeDefineEventType %d \n\
240 %%EventDef PajeDefineLinkType %d \n\
243 %% StartContainerType string \n\
244 %% EndContainerType string \n\
247 %%EventDef PajeDefineEntityValue %d \n\
253 %%EventDef PajeCreateContainer %d \n\
257 %% Container string \n\
260 %%EventDef PajeDestroyContainer %d \n\
265 %%EventDef PajeSetVariable %d \n\
268 %% Container string \n\
271 %%EventDef PajeAddVariable %d \n\
274 %% Container string \n\
277 %%EventDef PajeSubVariable %d \n\
280 %% Container string \n\
283 %%EventDef PajeSetState %d \n\
286 %% Container string \n\
289 %%EventDef PajePushState %d \n\
292 %% Container string \n\
295 %%EventDef PajePopState %d \n\
298 %% Container string \n\
300 %%EventDef PajeResetState %d \n\
303 %% Container string \n\
305 %%EventDef PajeStartLink %d \n\
308 %% Container string \n\
310 %% StartContainer string \n\
313 %%EventDef PajeEndLink %d \n\
316 %% Container string \n\
318 %% EndContainer string \n\
321 %%EventDef PajeNewEvent %d \n\
324 %% Container string \n\
327 PAJE_DefineContainerType,
328 PAJE_DefineVariableType,
329 PAJE_DefineStateType,
330 PAJE_DefineEventType,
332 PAJE_DefineEntityValue,
333 PAJE_CreateContainer,
334 PAJE_DestroyContainer,
347 /* internal do the instrumentation module */
348 static void insert_into_buffer (paje_event_t tbi)
350 if (TRACE_buffer() == 0){
355 XBT_DEBUG("%s: insert event_type=%d, timestamp=%f, buffersize=%lu)",
356 __FUNCTION__, (int)tbi->event_type, tbi->timestamp, xbt_dynar_length(buffer));
359 for (i = xbt_dynar_length(buffer); i > 0; i--) {
360 paje_event_t e1 = *(paje_event_t*)xbt_dynar_get_ptr(buffer, i - 1);
361 if (e1->timestamp <= tbi->timestamp)
364 xbt_dynar_insert_at(buffer, i, &tbi);
366 XBT_DEBUG("%s: inserted at beginning", __FUNCTION__);
368 XBT_DEBUG("%s: inserted at%s %u", __FUNCTION__,
369 (i == xbt_dynar_length(buffer) - 1 ? " end, pos =" : ""), i);
372 static void print_pajeDefineContainerType(paje_event_t event)
374 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
375 fprintf(tracing_file, "%d %s %s %s\n",
376 (int)event->event_type,
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__, (int)event->event_type);
385 fprintf(tracing_file, "%d %s %s %s \"%s\"\n",
386 (int)event->event_type,
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__, (int)event->event_type);
396 fprintf(tracing_file, "%d %s %s %s\n",
397 (int)event->event_type,
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__, (int)event->event_type);
406 fprintf(tracing_file, "%d %s %s %s\n",
407 (int)event->event_type,
408 ((defineEventType_t)event->data)->type->id,
409 ((defineEventType_t)event->data)->type->father->id,
410 ((defineEventType_t)event->data)->type->name);
413 static void print_pajeDefineLinkType(paje_event_t event)
415 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
416 fprintf(tracing_file, "%d %s %s %s %s %s\n",
417 (int)event->event_type,
418 ((defineLinkType_t)event->data)->type->id,
419 ((defineLinkType_t)event->data)->type->father->id,
420 ((defineLinkType_t)event->data)->source->id,
421 ((defineLinkType_t)event->data)->dest->id,
422 ((defineLinkType_t)event->data)->type->name);
425 static void print_pajeDefineEntityValue (paje_event_t event)
427 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
428 fprintf(tracing_file, "%d %s %s %s \"%s\"\n",
429 (int)event->event_type,
430 ((defineEntityValue_t)event->data)->value->id,
431 ((defineEntityValue_t)event->data)->value->father->id,
432 ((defineEntityValue_t)event->data)->value->name,
433 ((defineEntityValue_t)event->data)->value->color);
436 static void print_pajeCreateContainer(paje_event_t event)
438 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
439 if (event->timestamp == 0){
440 fprintf(tracing_file, "%d 0 %s %s %s \"%s\"\n",
441 (int)event->event_type,
442 ((createContainer_t)event->data)->container->id,
443 ((createContainer_t)event->data)->container->type->id,
444 ((createContainer_t)event->data)->container->father->id,
445 ((createContainer_t)event->data)->container->name);
447 fprintf(tracing_file, "%d %lf %s %s %s \"%s\"\n",
448 (int)event->event_type,
450 ((createContainer_t)event->data)->container->id,
451 ((createContainer_t)event->data)->container->type->id,
452 ((createContainer_t)event->data)->container->father->id,
453 ((createContainer_t)event->data)->container->name);
457 static void print_pajeDestroyContainer(paje_event_t event)
459 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
460 if (event->timestamp == 0){
461 fprintf(tracing_file, "%d 0 %s %s\n",
462 (int)event->event_type,
463 ((destroyContainer_t)event->data)->container->type->id,
464 ((destroyContainer_t)event->data)->container->id);
466 fprintf(tracing_file, "%d %lf %s %s\n",
467 (int)event->event_type,
469 ((destroyContainer_t)event->data)->container->type->id,
470 ((destroyContainer_t)event->data)->container->id);
474 static void print_pajeSetVariable(paje_event_t event)
476 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
477 if (event->timestamp == 0){
478 fprintf(tracing_file, "%d 0 %s %s %f\n",
479 (int)event->event_type,
480 ((setVariable_t)event->data)->type->id,
481 ((setVariable_t)event->data)->container->id,
482 ((setVariable_t)event->data)->value);
484 fprintf(tracing_file, "%d %lf %s %s %f\n",
485 (int)event->event_type,
487 ((setVariable_t)event->data)->type->id,
488 ((setVariable_t)event->data)->container->id,
489 ((setVariable_t)event->data)->value);
493 static void print_pajeAddVariable(paje_event_t event)
495 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
496 if (event->timestamp == 0){
497 fprintf(tracing_file, "%d 0 %s %s %f\n",
498 (int)event->event_type,
499 ((addVariable_t)event->data)->type->id,
500 ((addVariable_t)event->data)->container->id,
501 ((addVariable_t)event->data)->value);
503 fprintf(tracing_file, "%d %lf %s %s %f\n",
504 (int)event->event_type,
506 ((addVariable_t)event->data)->type->id,
507 ((addVariable_t)event->data)->container->id,
508 ((addVariable_t)event->data)->value);
512 static void print_pajeSubVariable(paje_event_t event)
514 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
515 if (event->timestamp == 0){
516 fprintf(tracing_file, "%d 0 %s %s %f\n",
517 (int)event->event_type,
518 ((subVariable_t)event->data)->type->id,
519 ((subVariable_t)event->data)->container->id,
520 ((subVariable_t)event->data)->value);
522 fprintf(tracing_file, "%d %lf %s %s %f\n",
523 (int)event->event_type,
525 ((subVariable_t)event->data)->type->id,
526 ((subVariable_t)event->data)->container->id,
527 ((subVariable_t)event->data)->value);
531 static void print_pajeSetState(paje_event_t event)
533 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
534 if (event->timestamp == 0){
535 fprintf(tracing_file, "%d 0 %s %s %s\n",
536 (int)event->event_type,
537 ((setState_t)event->data)->type->id,
538 ((setState_t)event->data)->container->id,
539 ((setState_t)event->data)->value->id);
541 fprintf(tracing_file, "%d %lf %s %s %s\n",
542 (int)event->event_type,
544 ((setState_t)event->data)->type->id,
545 ((setState_t)event->data)->container->id,
546 ((setState_t)event->data)->value->id);
550 static void print_pajePushState(paje_event_t event)
552 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
553 if (event->timestamp == 0){
554 fprintf(tracing_file, "%d 0 %s %s %s\n",
555 (int)event->event_type,
556 ((pushState_t)event->data)->type->id,
557 ((pushState_t)event->data)->container->id,
558 ((pushState_t)event->data)->value->id);
560 fprintf(tracing_file, "%d %lf %s %s %s\n",
561 (int)event->event_type,
563 ((pushState_t)event->data)->type->id,
564 ((pushState_t)event->data)->container->id,
565 ((pushState_t)event->data)->value->id);
569 static void print_pajePopState(paje_event_t event)
571 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
572 if (event->timestamp == 0){
573 fprintf(tracing_file, "%d 0 %s %s\n",
574 (int)event->event_type,
575 ((popState_t)event->data)->type->id,
576 ((popState_t)event->data)->container->id);
578 fprintf(tracing_file, "%d %lf %s %s\n",
579 (int)event->event_type,
581 ((popState_t)event->data)->type->id,
582 ((popState_t)event->data)->container->id);
586 static void print_pajeResetState(paje_event_t event)
588 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
589 if (event->timestamp == 0){
590 fprintf(tracing_file, "%d 0 %s %s\n",
591 (int)event->event_type,
592 ((resetState_t)event->data)->type->id,
593 ((resetState_t)event->data)->container->id);
595 fprintf(tracing_file, "%d %lf %s %s\n",
596 (int)event->event_type,
598 ((resetState_t)event->data)->type->id,
599 ((resetState_t)event->data)->container->id);
603 static void print_pajeStartLink(paje_event_t event)
605 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
606 if (event->timestamp == 0){
607 fprintf(tracing_file, "%d 0 %s %s %s %s %s\n",
608 (int)event->event_type,
609 ((startLink_t)event->data)->type->id,
610 ((startLink_t)event->data)->container->id,
611 ((startLink_t)event->data)->value,
612 ((startLink_t)event->data)->sourceContainer->id,
613 ((startLink_t)event->data)->key);
615 fprintf(tracing_file, "%d %lf %s %s %s %s %s\n",
616 (int)event->event_type,
618 ((startLink_t)event->data)->type->id,
619 ((startLink_t)event->data)->container->id,
620 ((startLink_t)event->data)->value,
621 ((startLink_t)event->data)->sourceContainer->id,
622 ((startLink_t)event->data)->key);
626 static void print_pajeEndLink(paje_event_t event)
628 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
629 if (event->timestamp == 0){
630 fprintf(tracing_file, "%d 0 %s %s %s %s %s\n",
631 (int)event->event_type,
632 ((endLink_t)event->data)->type->id,
633 ((endLink_t)event->data)->container->id,
634 ((endLink_t)event->data)->value,
635 ((endLink_t)event->data)->destContainer->id,
636 ((endLink_t)event->data)->key);
638 fprintf(tracing_file, "%d %lf %s %s %s %s %s\n",
639 (int)event->event_type,
641 ((endLink_t)event->data)->type->id,
642 ((endLink_t)event->data)->container->id,
643 ((endLink_t)event->data)->value,
644 ((endLink_t)event->data)->destContainer->id,
645 ((endLink_t)event->data)->key);
649 static void print_pajeNewEvent (paje_event_t event)
651 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
652 if (event->timestamp == 0){
653 fprintf(tracing_file, "%d 0 %s %s %s\n",
654 (int)event->event_type,
655 ((newEvent_t)event->data)->type->id,
656 ((newEvent_t)event->data)->container->id,
657 ((newEvent_t)event->data)->value->id);
659 fprintf(tracing_file, "%d %lf %s %s %s\n",
660 (int)event->event_type,
662 ((newEvent_t)event->data)->type->id,
663 ((newEvent_t)event->data)->container->id,
664 ((newEvent_t)event->data)->value->id);
668 static void free_paje_event (paje_event_t event)
670 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
671 switch (event->event_type){
673 xbt_free (((startLink_t)(event->data))->value);
674 xbt_free (((startLink_t)(event->data))->key);
677 xbt_free (((endLink_t)(event->data))->value);
678 xbt_free (((endLink_t)(event->data))->key);
683 xbt_free (event->data);
687 void new_pajeDefineContainerType(type_t type)
689 paje_event_t event = xbt_new0(s_paje_event_t, 1);
690 event->event_type = PAJE_DefineContainerType;
691 event->timestamp = 0;
692 event->print = print_pajeDefineContainerType;
693 event->free = free_paje_event;
694 event->data = xbt_new0(s_defineContainerType_t, 1);
695 ((defineContainerType_t)(event->data))->type = type;
697 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
700 event->print (event);
704 void new_pajeDefineVariableType(type_t type)
706 paje_event_t event = xbt_new0(s_paje_event_t, 1);
707 event->event_type = PAJE_DefineVariableType;
708 event->timestamp = 0;
709 event->print = print_pajeDefineVariableType;
710 event->free = free_paje_event;
711 event->data = xbt_new0(s_defineVariableType_t, 1);
712 ((defineVariableType_t)(event->data))->type = type;
714 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
717 event->print (event);
721 void new_pajeDefineStateType(type_t type)
723 paje_event_t event = xbt_new0(s_paje_event_t, 1);
724 event->event_type = PAJE_DefineStateType;
725 event->timestamp = 0;
726 event->print = print_pajeDefineStateType;
727 event->free = free_paje_event;
728 event->data = xbt_new0(s_defineStateType_t, 1);
729 ((defineStateType_t)(event->data))->type = type;
731 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
734 event->print (event);
738 void new_pajeDefineEventType(type_t type)
740 paje_event_t event = xbt_new0(s_paje_event_t, 1);
741 event->event_type = PAJE_DefineEventType;
742 event->timestamp = 0;
743 event->print = print_pajeDefineEventType;
744 event->free = free_paje_event;
745 event->data = xbt_new0(s_defineEventType_t, 1);
746 ((defineEventType_t)(event->data))->type = type;
748 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
751 event->print (event);
755 void new_pajeDefineLinkType(type_t type, type_t source, type_t dest)
757 paje_event_t event = xbt_new0(s_paje_event_t, 1);
758 event->event_type = PAJE_DefineLinkType;
759 event->timestamp = 0;
760 event->print = print_pajeDefineLinkType;
761 event->free = free_paje_event;
762 event->data = xbt_new0(s_defineLinkType_t, 1);
763 ((defineLinkType_t)(event->data))->type = type;
764 ((defineLinkType_t)(event->data))->source = source;
765 ((defineLinkType_t)(event->data))->dest = dest;
767 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
770 event->print (event);
774 void new_pajeDefineEntityValue (val_t value)
776 paje_event_t event = xbt_new0(s_paje_event_t, 1);
777 event->event_type = PAJE_DefineEntityValue;
778 event->timestamp = 0;
779 event->print = print_pajeDefineEntityValue;
780 event->free = free_paje_event;
781 event->data = xbt_new0(s_defineEntityValue_t, 1);
782 ((defineEntityValue_t)(event->data))->value = value;
784 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
787 event->print (event);
791 void new_pajeCreateContainer (container_t container)
793 paje_event_t event = xbt_new0(s_paje_event_t, 1);
794 event->event_type = PAJE_CreateContainer;
795 event->timestamp = SIMIX_get_clock();
796 event->print = print_pajeCreateContainer;
797 event->free = free_paje_event;
798 event->data = xbt_new0(s_createContainer_t, 1);
799 ((createContainer_t)(event->data))->container = container;
801 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
804 event->print (event);
808 void new_pajeDestroyContainer (container_t container)
810 paje_event_t event = xbt_new0(s_paje_event_t, 1);
811 event->event_type = PAJE_DestroyContainer;
812 event->timestamp = SIMIX_get_clock();
813 event->print = print_pajeDestroyContainer;
814 event->free = free_paje_event;
815 event->data = xbt_new0(s_destroyContainer_t, 1);
816 ((destroyContainer_t)(event->data))->container = container;
818 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
821 event->print (event);
825 void new_pajeSetVariable (double timestamp, container_t container, type_t type, double value)
827 paje_event_t event = xbt_new0(s_paje_event_t, 1);
828 event->event_type = PAJE_SetVariable;
829 event->timestamp = timestamp;
830 event->print = print_pajeSetVariable;
831 event->free = free_paje_event;
832 event->data = xbt_new0(s_setVariable_t, 1);
833 ((setVariable_t)(event->data))->type = type;
834 ((setVariable_t)(event->data))->container = container;
835 ((setVariable_t)(event->data))->value = value;
837 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
839 insert_into_buffer (event);
843 void new_pajeAddVariable (double timestamp, container_t container, type_t type, double value)
845 paje_event_t event = xbt_new0(s_paje_event_t, 1);
846 event->event_type = PAJE_AddVariable;
847 event->timestamp = timestamp;
848 event->print = print_pajeAddVariable;
849 event->free = free_paje_event;
850 event->data = xbt_new0(s_addVariable_t, 1);
851 ((addVariable_t)(event->data))->type = type;
852 ((addVariable_t)(event->data))->container = container;
853 ((addVariable_t)(event->data))->value = value;
855 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
857 insert_into_buffer (event);
860 void new_pajeSubVariable (double timestamp, container_t container, type_t type, double value)
862 paje_event_t event = xbt_new0(s_paje_event_t, 1);
863 event->event_type = PAJE_SubVariable;
864 event->timestamp = timestamp;
865 event->print = print_pajeSubVariable;
866 event->free = free_paje_event;
867 event->data = xbt_new0(s_subVariable_t, 1);
868 ((subVariable_t)(event->data))->type = type;
869 ((subVariable_t)(event->data))->container = container;
870 ((subVariable_t)(event->data))->value = value;
872 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
874 insert_into_buffer (event);
877 void new_pajeSetState (double timestamp, container_t container, type_t type, val_t value)
879 paje_event_t event = xbt_new0(s_paje_event_t, 1);
880 event->event_type = PAJE_SetState;
881 event->timestamp = timestamp;
882 event->print = print_pajeSetState;
883 event->free = free_paje_event;
884 event->data = xbt_new0(s_setState_t, 1);
885 ((setState_t)(event->data))->type = type;
886 ((setState_t)(event->data))->container = container;
887 ((setState_t)(event->data))->value = value;
889 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
891 insert_into_buffer (event);
895 void new_pajePushState (double timestamp, container_t container, type_t type, val_t value)
897 paje_event_t event = xbt_new0(s_paje_event_t, 1);
898 event->event_type = PAJE_PushState;
899 event->timestamp = timestamp;
900 event->print = print_pajePushState;
901 event->free = free_paje_event;
902 event->data = xbt_new0(s_pushState_t, 1);
903 ((pushState_t)(event->data))->type = type;
904 ((pushState_t)(event->data))->container = container;
905 ((pushState_t)(event->data))->value = value;
907 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
909 insert_into_buffer (event);
913 void new_pajePopState (double timestamp, container_t container, type_t type)
915 paje_event_t event = xbt_new0(s_paje_event_t, 1);
916 event->event_type = PAJE_PopState;
917 event->timestamp = timestamp;
918 event->print = print_pajePopState;
919 event->free = free_paje_event;
920 event->data = xbt_new0(s_popState_t, 1);
921 ((popState_t)(event->data))->type = type;
922 ((popState_t)(event->data))->container = container;
924 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
926 insert_into_buffer (event);
930 void new_pajeResetState (double timestamp, container_t container, type_t type)
932 paje_event_t event = xbt_new0(s_paje_event_t, 1);
933 event->event_type = PAJE_ResetState;
934 event->timestamp = timestamp;
935 event->print = print_pajeResetState;
936 event->free = free_paje_event;
937 event->data = xbt_new0(s_resetState_t, 1);
938 ((resetState_t)(event->data))->type = type;
939 ((resetState_t)(event->data))->container = container;
941 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
943 insert_into_buffer (event);
946 void new_pajeStartLink (double timestamp, container_t container, type_t type, container_t sourceContainer, const char *value, const char *key)
948 paje_event_t event = xbt_new0(s_paje_event_t, 1);
949 event->event_type = PAJE_StartLink;
950 event->timestamp = timestamp;
951 event->print = print_pajeStartLink;
952 event->free = free_paje_event;
953 event->data = xbt_new0(s_startLink_t, 1);
954 ((startLink_t)(event->data))->type = type;
955 ((startLink_t)(event->data))->container = container;
956 ((startLink_t)(event->data))->sourceContainer = sourceContainer;
957 ((startLink_t)(event->data))->value = xbt_strdup(value);
958 ((startLink_t)(event->data))->key = xbt_strdup(key);
960 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
962 insert_into_buffer (event);
965 void new_pajeEndLink (double timestamp, container_t container, type_t type, container_t destContainer, const char *value, const char *key)
967 paje_event_t event = xbt_new0(s_paje_event_t, 1);
968 event->event_type = PAJE_EndLink;
969 event->timestamp = timestamp;
970 event->print = print_pajeEndLink;
971 event->free = free_paje_event;
972 event->data = xbt_new0(s_endLink_t, 1);
973 ((endLink_t)(event->data))->type = type;
974 ((endLink_t)(event->data))->container = container;
975 ((endLink_t)(event->data))->destContainer = destContainer;
976 ((endLink_t)(event->data))->value = xbt_strdup(value);
977 ((endLink_t)(event->data))->key = xbt_strdup(key);
979 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
981 insert_into_buffer (event);
984 void new_pajeNewEvent (double timestamp, container_t container, type_t type, val_t value)
986 paje_event_t event = xbt_new0(s_paje_event_t, 1);
987 event->event_type = PAJE_NewEvent;
988 event->timestamp = timestamp;
989 event->print = print_pajeNewEvent;
990 event->free = free_paje_event;
991 event->data = xbt_new0(s_newEvent_t, 1);
992 ((newEvent_t)(event->data))->type = type;
993 ((newEvent_t)(event->data))->container = container;
994 ((newEvent_t)(event->data))->value = value;
996 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
998 insert_into_buffer (event);
1001 #endif /* HAVE_TRACING */