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\
241 %%EventDef PajeDefineLinkType %d \n\
244 %% StartContainerType string \n\
245 %% EndContainerType string \n\
248 %%EventDef PajeDefineEntityValue %d \n\
254 %%EventDef PajeCreateContainer %d \n\
258 %% Container string \n\
261 %%EventDef PajeDestroyContainer %d \n\
266 %%EventDef PajeSetVariable %d \n\
269 %% Container string \n\
272 %%EventDef PajeAddVariable %d \n\
275 %% Container string \n\
278 %%EventDef PajeSubVariable %d \n\
281 %% Container string \n\
284 %%EventDef PajeSetState %d \n\
287 %% Container string \n\
290 %%EventDef PajePushState %d \n\
293 %% Container string \n\
296 %%EventDef PajePopState %d \n\
299 %% Container string \n\
301 %%EventDef PajeResetState %d \n\
304 %% Container string \n\
306 %%EventDef PajeStartLink %d \n\
309 %% Container string \n\
311 %% StartContainer string \n\
314 %%EventDef PajeEndLink %d \n\
317 %% Container string \n\
319 %% EndContainer string \n\
322 %%EventDef PajeNewEvent %d \n\
325 %% Container string \n\
328 PAJE_DefineContainerType,
329 PAJE_DefineVariableType,
330 PAJE_DefineStateType,
331 PAJE_DefineEventType,
333 PAJE_DefineEntityValue,
334 PAJE_CreateContainer,
335 PAJE_DestroyContainer,
348 /* internal do the instrumentation module */
349 static void insert_into_buffer (paje_event_t tbi)
351 if (TRACE_buffer() == 0){
356 XBT_DEBUG("%s: insert event_type=%d, timestamp=%f, buffersize=%lu)",
357 __FUNCTION__, (int)tbi->event_type, tbi->timestamp, xbt_dynar_length(buffer));
360 for (i = xbt_dynar_length(buffer); i > 0; i--) {
361 paje_event_t e1 = *(paje_event_t*)xbt_dynar_get_ptr(buffer, i - 1);
362 if (e1->timestamp <= tbi->timestamp)
365 xbt_dynar_insert_at(buffer, i, &tbi);
367 XBT_DEBUG("%s: inserted at beginning", __FUNCTION__);
369 XBT_DEBUG("%s: inserted at%s %u", __FUNCTION__,
370 (i == xbt_dynar_length(buffer) - 1 ? " end, pos =" : ""), i);
373 static void print_pajeDefineContainerType(paje_event_t event)
375 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
376 fprintf(tracing_file, "%d %s %s %s\n",
377 (int)event->event_type,
378 ((defineContainerType_t)event->data)->type->id,
379 ((defineContainerType_t)event->data)->type->father->id,
380 ((defineContainerType_t)event->data)->type->name);
383 static void print_pajeDefineVariableType(paje_event_t event)
385 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
386 fprintf(tracing_file, "%d %s %s %s \"%s\"\n",
387 (int)event->event_type,
388 ((defineVariableType_t)event->data)->type->id,
389 ((defineVariableType_t)event->data)->type->father->id,
390 ((defineVariableType_t)event->data)->type->name,
391 ((defineVariableType_t)event->data)->type->color);
394 static void print_pajeDefineStateType(paje_event_t event)
396 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
397 fprintf(tracing_file, "%d %s %s %s\n",
398 (int)event->event_type,
399 ((defineStateType_t)event->data)->type->id,
400 ((defineStateType_t)event->data)->type->father->id,
401 ((defineStateType_t)event->data)->type->name);
404 static void print_pajeDefineEventType(paje_event_t event)
406 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
407 fprintf(tracing_file, "%d %s %s %s \"%s\"\n",
408 (int)event->event_type,
409 ((defineEventType_t)event->data)->type->id,
410 ((defineEventType_t)event->data)->type->father->id,
411 ((defineEventType_t)event->data)->type->name,
412 ((defineEventType_t)event->data)->type->color);
415 static void print_pajeDefineLinkType(paje_event_t event)
417 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
418 fprintf(tracing_file, "%d %s %s %s %s %s\n",
419 (int)event->event_type,
420 ((defineLinkType_t)event->data)->type->id,
421 ((defineLinkType_t)event->data)->type->father->id,
422 ((defineLinkType_t)event->data)->source->id,
423 ((defineLinkType_t)event->data)->dest->id,
424 ((defineLinkType_t)event->data)->type->name);
427 static void print_pajeDefineEntityValue (paje_event_t event)
429 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
430 fprintf(tracing_file, "%d %s %s %s \"%s\"\n",
431 (int)event->event_type,
432 ((defineEntityValue_t)event->data)->value->id,
433 ((defineEntityValue_t)event->data)->value->father->id,
434 ((defineEntityValue_t)event->data)->value->name,
435 ((defineEntityValue_t)event->data)->value->color);
438 static void print_pajeCreateContainer(paje_event_t event)
440 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
441 if (event->timestamp == 0){
442 fprintf(tracing_file, "%d 0 %s %s %s \"%s\"\n",
443 (int)event->event_type,
444 ((createContainer_t)event->data)->container->id,
445 ((createContainer_t)event->data)->container->type->id,
446 ((createContainer_t)event->data)->container->father->id,
447 ((createContainer_t)event->data)->container->name);
449 fprintf(tracing_file, "%d %lf %s %s %s \"%s\"\n",
450 (int)event->event_type,
452 ((createContainer_t)event->data)->container->id,
453 ((createContainer_t)event->data)->container->type->id,
454 ((createContainer_t)event->data)->container->father->id,
455 ((createContainer_t)event->data)->container->name);
459 static void print_pajeDestroyContainer(paje_event_t event)
461 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
462 if (event->timestamp == 0){
463 fprintf(tracing_file, "%d 0 %s %s\n",
464 (int)event->event_type,
465 ((destroyContainer_t)event->data)->container->type->id,
466 ((destroyContainer_t)event->data)->container->id);
468 fprintf(tracing_file, "%d %lf %s %s\n",
469 (int)event->event_type,
471 ((destroyContainer_t)event->data)->container->type->id,
472 ((destroyContainer_t)event->data)->container->id);
476 static void print_pajeSetVariable(paje_event_t event)
478 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
479 if (event->timestamp == 0){
480 fprintf(tracing_file, "%d 0 %s %s %f\n",
481 (int)event->event_type,
482 ((setVariable_t)event->data)->type->id,
483 ((setVariable_t)event->data)->container->id,
484 ((setVariable_t)event->data)->value);
486 fprintf(tracing_file, "%d %lf %s %s %f\n",
487 (int)event->event_type,
489 ((setVariable_t)event->data)->type->id,
490 ((setVariable_t)event->data)->container->id,
491 ((setVariable_t)event->data)->value);
495 static void print_pajeAddVariable(paje_event_t event)
497 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
498 if (event->timestamp == 0){
499 fprintf(tracing_file, "%d 0 %s %s %f\n",
500 (int)event->event_type,
501 ((addVariable_t)event->data)->type->id,
502 ((addVariable_t)event->data)->container->id,
503 ((addVariable_t)event->data)->value);
505 fprintf(tracing_file, "%d %lf %s %s %f\n",
506 (int)event->event_type,
508 ((addVariable_t)event->data)->type->id,
509 ((addVariable_t)event->data)->container->id,
510 ((addVariable_t)event->data)->value);
514 static void print_pajeSubVariable(paje_event_t event)
516 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
517 if (event->timestamp == 0){
518 fprintf(tracing_file, "%d 0 %s %s %f\n",
519 (int)event->event_type,
520 ((subVariable_t)event->data)->type->id,
521 ((subVariable_t)event->data)->container->id,
522 ((subVariable_t)event->data)->value);
524 fprintf(tracing_file, "%d %lf %s %s %f\n",
525 (int)event->event_type,
527 ((subVariable_t)event->data)->type->id,
528 ((subVariable_t)event->data)->container->id,
529 ((subVariable_t)event->data)->value);
533 static void print_pajeSetState(paje_event_t event)
535 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
536 if (event->timestamp == 0){
537 fprintf(tracing_file, "%d 0 %s %s %s\n",
538 (int)event->event_type,
539 ((setState_t)event->data)->type->id,
540 ((setState_t)event->data)->container->id,
541 ((setState_t)event->data)->value->id);
543 fprintf(tracing_file, "%d %lf %s %s %s\n",
544 (int)event->event_type,
546 ((setState_t)event->data)->type->id,
547 ((setState_t)event->data)->container->id,
548 ((setState_t)event->data)->value->id);
552 static void print_pajePushState(paje_event_t event)
554 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
555 if (event->timestamp == 0){
556 fprintf(tracing_file, "%d 0 %s %s %s\n",
557 (int)event->event_type,
558 ((pushState_t)event->data)->type->id,
559 ((pushState_t)event->data)->container->id,
560 ((pushState_t)event->data)->value->id);
562 fprintf(tracing_file, "%d %lf %s %s %s\n",
563 (int)event->event_type,
565 ((pushState_t)event->data)->type->id,
566 ((pushState_t)event->data)->container->id,
567 ((pushState_t)event->data)->value->id);
571 static void print_pajePopState(paje_event_t event)
573 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
574 if (event->timestamp == 0){
575 fprintf(tracing_file, "%d 0 %s %s\n",
576 (int)event->event_type,
577 ((popState_t)event->data)->type->id,
578 ((popState_t)event->data)->container->id);
580 fprintf(tracing_file, "%d %lf %s %s\n",
581 (int)event->event_type,
583 ((popState_t)event->data)->type->id,
584 ((popState_t)event->data)->container->id);
588 static void print_pajeResetState(paje_event_t event)
590 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
591 if (event->timestamp == 0){
592 fprintf(tracing_file, "%d 0 %s %s\n",
593 (int)event->event_type,
594 ((resetState_t)event->data)->type->id,
595 ((resetState_t)event->data)->container->id);
597 fprintf(tracing_file, "%d %lf %s %s\n",
598 (int)event->event_type,
600 ((resetState_t)event->data)->type->id,
601 ((resetState_t)event->data)->container->id);
605 static void print_pajeStartLink(paje_event_t event)
607 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
608 if (event->timestamp == 0){
609 fprintf(tracing_file, "%d 0 %s %s %s %s %s\n",
610 (int)event->event_type,
611 ((startLink_t)event->data)->type->id,
612 ((startLink_t)event->data)->container->id,
613 ((startLink_t)event->data)->value,
614 ((startLink_t)event->data)->sourceContainer->id,
615 ((startLink_t)event->data)->key);
617 fprintf(tracing_file, "%d %lf %s %s %s %s %s\n",
618 (int)event->event_type,
620 ((startLink_t)event->data)->type->id,
621 ((startLink_t)event->data)->container->id,
622 ((startLink_t)event->data)->value,
623 ((startLink_t)event->data)->sourceContainer->id,
624 ((startLink_t)event->data)->key);
628 static void print_pajeEndLink(paje_event_t event)
630 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
631 if (event->timestamp == 0){
632 fprintf(tracing_file, "%d 0 %s %s %s %s %s\n",
633 (int)event->event_type,
634 ((endLink_t)event->data)->type->id,
635 ((endLink_t)event->data)->container->id,
636 ((endLink_t)event->data)->value,
637 ((endLink_t)event->data)->destContainer->id,
638 ((endLink_t)event->data)->key);
640 fprintf(tracing_file, "%d %lf %s %s %s %s %s\n",
641 (int)event->event_type,
643 ((endLink_t)event->data)->type->id,
644 ((endLink_t)event->data)->container->id,
645 ((endLink_t)event->data)->value,
646 ((endLink_t)event->data)->destContainer->id,
647 ((endLink_t)event->data)->key);
651 static void print_pajeNewEvent (paje_event_t event)
653 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
654 if (event->timestamp == 0){
655 fprintf(tracing_file, "%d 0 %s %s %s\n",
656 (int)event->event_type,
657 ((newEvent_t)event->data)->type->id,
658 ((newEvent_t)event->data)->container->id,
659 ((newEvent_t)event->data)->value->id);
661 fprintf(tracing_file, "%d %lf %s %s %s\n",
662 (int)event->event_type,
664 ((newEvent_t)event->data)->type->id,
665 ((newEvent_t)event->data)->container->id,
666 ((newEvent_t)event->data)->value->id);
670 static void free_paje_event (paje_event_t event)
672 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
673 switch (event->event_type){
675 xbt_free (((startLink_t)(event->data))->value);
676 xbt_free (((startLink_t)(event->data))->key);
679 xbt_free (((endLink_t)(event->data))->value);
680 xbt_free (((endLink_t)(event->data))->key);
685 xbt_free (event->data);
689 void new_pajeDefineContainerType(type_t type)
691 paje_event_t event = xbt_new0(s_paje_event_t, 1);
692 event->event_type = PAJE_DefineContainerType;
693 event->timestamp = 0;
694 event->print = print_pajeDefineContainerType;
695 event->free = free_paje_event;
696 event->data = xbt_new0(s_defineContainerType_t, 1);
697 ((defineContainerType_t)(event->data))->type = type;
699 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
702 event->print (event);
706 void new_pajeDefineVariableType(type_t type)
708 paje_event_t event = xbt_new0(s_paje_event_t, 1);
709 event->event_type = PAJE_DefineVariableType;
710 event->timestamp = 0;
711 event->print = print_pajeDefineVariableType;
712 event->free = free_paje_event;
713 event->data = xbt_new0(s_defineVariableType_t, 1);
714 ((defineVariableType_t)(event->data))->type = type;
716 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
719 event->print (event);
723 void new_pajeDefineStateType(type_t type)
725 paje_event_t event = xbt_new0(s_paje_event_t, 1);
726 event->event_type = PAJE_DefineStateType;
727 event->timestamp = 0;
728 event->print = print_pajeDefineStateType;
729 event->free = free_paje_event;
730 event->data = xbt_new0(s_defineStateType_t, 1);
731 ((defineStateType_t)(event->data))->type = type;
733 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
736 event->print (event);
740 void new_pajeDefineEventType(type_t type)
742 paje_event_t event = xbt_new0(s_paje_event_t, 1);
743 event->event_type = PAJE_DefineEventType;
744 event->timestamp = 0;
745 event->print = print_pajeDefineEventType;
746 event->free = free_paje_event;
747 event->data = xbt_new0(s_defineEventType_t, 1);
748 ((defineEventType_t)(event->data))->type = type;
750 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
753 event->print (event);
757 void new_pajeDefineLinkType(type_t type, type_t source, type_t dest)
759 paje_event_t event = xbt_new0(s_paje_event_t, 1);
760 event->event_type = PAJE_DefineLinkType;
761 event->timestamp = 0;
762 event->print = print_pajeDefineLinkType;
763 event->free = free_paje_event;
764 event->data = xbt_new0(s_defineLinkType_t, 1);
765 ((defineLinkType_t)(event->data))->type = type;
766 ((defineLinkType_t)(event->data))->source = source;
767 ((defineLinkType_t)(event->data))->dest = dest;
769 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
772 event->print (event);
776 void new_pajeDefineEntityValue (val_t value)
778 paje_event_t event = xbt_new0(s_paje_event_t, 1);
779 event->event_type = PAJE_DefineEntityValue;
780 event->timestamp = 0;
781 event->print = print_pajeDefineEntityValue;
782 event->free = free_paje_event;
783 event->data = xbt_new0(s_defineEntityValue_t, 1);
784 ((defineEntityValue_t)(event->data))->value = value;
786 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
789 event->print (event);
793 void new_pajeCreateContainer (container_t container)
795 paje_event_t event = xbt_new0(s_paje_event_t, 1);
796 event->event_type = PAJE_CreateContainer;
797 event->timestamp = SIMIX_get_clock();
798 event->print = print_pajeCreateContainer;
799 event->free = free_paje_event;
800 event->data = xbt_new0(s_createContainer_t, 1);
801 ((createContainer_t)(event->data))->container = container;
803 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
806 event->print (event);
810 void new_pajeDestroyContainer (container_t container)
812 paje_event_t event = xbt_new0(s_paje_event_t, 1);
813 event->event_type = PAJE_DestroyContainer;
814 event->timestamp = SIMIX_get_clock();
815 event->print = print_pajeDestroyContainer;
816 event->free = free_paje_event;
817 event->data = xbt_new0(s_destroyContainer_t, 1);
818 ((destroyContainer_t)(event->data))->container = container;
820 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
823 event->print (event);
827 void new_pajeSetVariable (double timestamp, container_t container, type_t type, double value)
829 paje_event_t event = xbt_new0(s_paje_event_t, 1);
830 event->event_type = PAJE_SetVariable;
831 event->timestamp = timestamp;
832 event->print = print_pajeSetVariable;
833 event->free = free_paje_event;
834 event->data = xbt_new0(s_setVariable_t, 1);
835 ((setVariable_t)(event->data))->type = type;
836 ((setVariable_t)(event->data))->container = container;
837 ((setVariable_t)(event->data))->value = value;
839 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
841 insert_into_buffer (event);
845 void new_pajeAddVariable (double timestamp, container_t container, type_t type, double value)
847 paje_event_t event = xbt_new0(s_paje_event_t, 1);
848 event->event_type = PAJE_AddVariable;
849 event->timestamp = timestamp;
850 event->print = print_pajeAddVariable;
851 event->free = free_paje_event;
852 event->data = xbt_new0(s_addVariable_t, 1);
853 ((addVariable_t)(event->data))->type = type;
854 ((addVariable_t)(event->data))->container = container;
855 ((addVariable_t)(event->data))->value = value;
857 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
859 insert_into_buffer (event);
862 void new_pajeSubVariable (double timestamp, container_t container, type_t type, double value)
864 paje_event_t event = xbt_new0(s_paje_event_t, 1);
865 event->event_type = PAJE_SubVariable;
866 event->timestamp = timestamp;
867 event->print = print_pajeSubVariable;
868 event->free = free_paje_event;
869 event->data = xbt_new0(s_subVariable_t, 1);
870 ((subVariable_t)(event->data))->type = type;
871 ((subVariable_t)(event->data))->container = container;
872 ((subVariable_t)(event->data))->value = value;
874 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
876 insert_into_buffer (event);
879 void new_pajeSetState (double timestamp, container_t container, type_t type, val_t value)
881 paje_event_t event = xbt_new0(s_paje_event_t, 1);
882 event->event_type = PAJE_SetState;
883 event->timestamp = timestamp;
884 event->print = print_pajeSetState;
885 event->free = free_paje_event;
886 event->data = xbt_new0(s_setState_t, 1);
887 ((setState_t)(event->data))->type = type;
888 ((setState_t)(event->data))->container = container;
889 ((setState_t)(event->data))->value = value;
891 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
893 insert_into_buffer (event);
897 void new_pajePushState (double timestamp, container_t container, type_t type, val_t value)
899 paje_event_t event = xbt_new0(s_paje_event_t, 1);
900 event->event_type = PAJE_PushState;
901 event->timestamp = timestamp;
902 event->print = print_pajePushState;
903 event->free = free_paje_event;
904 event->data = xbt_new0(s_pushState_t, 1);
905 ((pushState_t)(event->data))->type = type;
906 ((pushState_t)(event->data))->container = container;
907 ((pushState_t)(event->data))->value = value;
909 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
911 insert_into_buffer (event);
915 void new_pajePopState (double timestamp, container_t container, type_t type)
917 paje_event_t event = xbt_new0(s_paje_event_t, 1);
918 event->event_type = PAJE_PopState;
919 event->timestamp = timestamp;
920 event->print = print_pajePopState;
921 event->free = free_paje_event;
922 event->data = xbt_new0(s_popState_t, 1);
923 ((popState_t)(event->data))->type = type;
924 ((popState_t)(event->data))->container = container;
926 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
928 insert_into_buffer (event);
932 void new_pajeResetState (double timestamp, container_t container, type_t type)
934 paje_event_t event = xbt_new0(s_paje_event_t, 1);
935 event->event_type = PAJE_ResetState;
936 event->timestamp = timestamp;
937 event->print = print_pajeResetState;
938 event->free = free_paje_event;
939 event->data = xbt_new0(s_resetState_t, 1);
940 ((resetState_t)(event->data))->type = type;
941 ((resetState_t)(event->data))->container = container;
943 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
945 insert_into_buffer (event);
948 void new_pajeStartLink (double timestamp, container_t container, type_t type, container_t sourceContainer, const char *value, const char *key)
950 paje_event_t event = xbt_new0(s_paje_event_t, 1);
951 event->event_type = PAJE_StartLink;
952 event->timestamp = timestamp;
953 event->print = print_pajeStartLink;
954 event->free = free_paje_event;
955 event->data = xbt_new0(s_startLink_t, 1);
956 ((startLink_t)(event->data))->type = type;
957 ((startLink_t)(event->data))->container = container;
958 ((startLink_t)(event->data))->sourceContainer = sourceContainer;
959 ((startLink_t)(event->data))->value = xbt_strdup(value);
960 ((startLink_t)(event->data))->key = xbt_strdup(key);
962 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
964 insert_into_buffer (event);
967 void new_pajeEndLink (double timestamp, container_t container, type_t type, container_t destContainer, const char *value, const char *key)
969 paje_event_t event = xbt_new0(s_paje_event_t, 1);
970 event->event_type = PAJE_EndLink;
971 event->timestamp = timestamp;
972 event->print = print_pajeEndLink;
973 event->free = free_paje_event;
974 event->data = xbt_new0(s_endLink_t, 1);
975 ((endLink_t)(event->data))->type = type;
976 ((endLink_t)(event->data))->container = container;
977 ((endLink_t)(event->data))->destContainer = destContainer;
978 ((endLink_t)(event->data))->value = xbt_strdup(value);
979 ((endLink_t)(event->data))->key = xbt_strdup(key);
981 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
983 insert_into_buffer (event);
986 void new_pajeNewEvent (double timestamp, container_t container, type_t type, val_t value)
988 paje_event_t event = xbt_new0(s_paje_event_t, 1);
989 event->event_type = PAJE_NewEvent;
990 event->timestamp = timestamp;
991 event->print = print_pajeNewEvent;
992 event->free = free_paje_event;
993 event->data = xbt_new0(s_newEvent_t, 1);
994 ((newEvent_t)(event->data))->type = type;
995 ((newEvent_t)(event->data))->container = container;
996 ((newEvent_t)(event->data))->value = value;
998 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
1000 insert_into_buffer (event);
1003 #endif /* HAVE_TRACING */