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 if (!TRACE_is_enabled()) return;
180 XBT_DEBUG("%s: dump until %f. starts", __FUNCTION__, TRACE_last_timestamp_to_dump);
184 xbt_dynar_foreach(buffer, i, event){
185 event->print (event);
188 xbt_dynar_free (&buffer);
189 buffer = xbt_dynar_new (sizeof(paje_event_t), NULL);
192 while (!xbt_dynar_is_empty(buffer)){
193 double head_timestamp = (*(paje_event_t*)xbt_dynar_get_ptr(buffer, 0))->timestamp;
194 if (head_timestamp > TRACE_last_timestamp_to_dump){
197 xbt_dynar_remove_at (buffer, 0, &event);
198 event->print (event);
202 XBT_DEBUG("%s: ends", __FUNCTION__);
205 void TRACE_paje_create_header(void)
207 XBT_DEBUG ("Define paje header");
208 fprintf(tracing_file, "\
209 %%EventDef PajeDefineContainerType %d \n\
211 %% ContainerType string \n\
214 %%EventDef PajeDefineVariableType %d \n\
216 %% ContainerType string \n\
220 %%EventDef PajeDefineStateType %d \n\
222 %% ContainerType string \n\
225 %%EventDef PajeDefineEventType %d \n\
227 %% ContainerType string \n\
231 %%EventDef PajeDefineLinkType %d \n\
233 %% ContainerType string \n\
234 %% SourceContainerType string \n\
235 %% DestContainerType string \n\
238 %%EventDef PajeDefineEntityValue %d \n\
240 %% EntityType string \n\
244 %%EventDef PajeCreateContainer %d \n\
248 %% Container string \n\
251 %%EventDef PajeDestroyContainer %d \n\
256 %%EventDef PajeSetVariable %d \n\
259 %% Container string \n\
262 %%EventDef PajeAddVariable %d \n\
265 %% Container string \n\
268 %%EventDef PajeSubVariable %d \n\
271 %% Container string \n\
274 %%EventDef PajeSetState %d \n\
277 %% Container string \n\
280 %%EventDef PajePushState %d \n\
283 %% Container string \n\
286 %%EventDef PajePopState %d \n\
289 %% Container string \n\
291 %%EventDef PajeStartLink %d \n\
294 %% Container string \n\
296 %% SourceContainer string \n\
299 %%EventDef PajeEndLink %d \n\
302 %% Container string \n\
304 %% DestContainer string \n\
307 %%EventDef PajeNewEvent %d \n\
310 %% Container string \n\
313 PAJE_DefineContainerType,
314 PAJE_DefineVariableType,
315 PAJE_DefineStateType,
316 PAJE_DefineEventType,
318 PAJE_DefineEntityValue,
319 PAJE_CreateContainer,
320 PAJE_DestroyContainer,
332 /* internal do the instrumentation module */
333 static void insert_into_buffer (paje_event_t tbi)
335 if (TRACE_buffer() == 0){
340 XBT_DEBUG("%s: insert event_type=%d, timestamp=%f, buffersize=%ld)", __FUNCTION__, tbi->event_type, tbi->timestamp, xbt_dynar_length(buffer));
343 for (i = xbt_dynar_length(buffer); i > 0; i--) {
344 paje_event_t e1 = *(paje_event_t*)xbt_dynar_get_ptr(buffer, i - 1);
345 if (e1->timestamp <= tbi->timestamp)
348 xbt_dynar_insert_at(buffer, i, &tbi);
350 XBT_DEBUG("%s: inserted at beginning", __FUNCTION__);
352 XBT_DEBUG("%s: inserted at%s %d", __FUNCTION__,
353 (i == xbt_dynar_length(buffer) - 1 ? " end, pos =" : ""), i);
356 static void print_pajeDefineContainerType(paje_event_t event)
358 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, event->event_type);
359 fprintf(tracing_file, "%d %s %s %s\n",
361 ((defineContainerType_t)event->data)->type->id,
362 ((defineContainerType_t)event->data)->type->father->id,
363 ((defineContainerType_t)event->data)->type->name);
366 static void print_pajeDefineVariableType(paje_event_t event)
368 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, event->event_type);
369 fprintf(tracing_file, "%d %s %s %s \"%s\"\n",
371 ((defineVariableType_t)event->data)->type->id,
372 ((defineVariableType_t)event->data)->type->father->id,
373 ((defineVariableType_t)event->data)->type->name,
374 ((defineVariableType_t)event->data)->type->color);
377 static void print_pajeDefineStateType(paje_event_t event)
379 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, event->event_type);
380 fprintf(tracing_file, "%d %s %s %s\n",
382 ((defineStateType_t)event->data)->type->id,
383 ((defineStateType_t)event->data)->type->father->id,
384 ((defineStateType_t)event->data)->type->name);
387 static void print_pajeDefineEventType(paje_event_t event)
389 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, event->event_type);
390 fprintf(tracing_file, "%d %s %s %s \"%s\"\n",
392 ((defineEventType_t)event->data)->type->id,
393 ((defineEventType_t)event->data)->type->father->id,
394 ((defineEventType_t)event->data)->type->name,
395 ((defineEventType_t)event->data)->type->color);
398 static void print_pajeDefineLinkType(paje_event_t event)
400 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, event->event_type);
401 fprintf(tracing_file, "%d %s %s %s %s %s\n",
403 ((defineLinkType_t)event->data)->type->id,
404 ((defineLinkType_t)event->data)->type->father->id,
405 ((defineLinkType_t)event->data)->source->id,
406 ((defineLinkType_t)event->data)->dest->id,
407 ((defineLinkType_t)event->data)->type->name);
410 static void print_pajeDefineEntityValue (paje_event_t event)
412 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, event->event_type);
413 fprintf(tracing_file, "%d %s %s %s \"%s\"\n",
415 ((defineEntityValue_t)event->data)->value->id,
416 ((defineEntityValue_t)event->data)->value->father->id,
417 ((defineEntityValue_t)event->data)->value->name,
418 ((defineEntityValue_t)event->data)->value->color);
421 static void print_pajeCreateContainer(paje_event_t event)
423 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
424 if (event->timestamp == 0){
425 fprintf(tracing_file, "%d 0 %s %s %s \"%s\"\n",
427 ((createContainer_t)event->data)->container->id,
428 ((createContainer_t)event->data)->container->type->id,
429 ((createContainer_t)event->data)->container->father->id,
430 ((createContainer_t)event->data)->container->name);
432 fprintf(tracing_file, "%d %lf %s %s %s \"%s\"\n",
435 ((createContainer_t)event->data)->container->id,
436 ((createContainer_t)event->data)->container->type->id,
437 ((createContainer_t)event->data)->container->father->id,
438 ((createContainer_t)event->data)->container->name);
442 static void print_pajeDestroyContainer(paje_event_t event)
444 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
445 if (event->timestamp == 0){
446 fprintf(tracing_file, "%d 0 %s %s\n",
448 ((destroyContainer_t)event->data)->container->type->id,
449 ((destroyContainer_t)event->data)->container->id);
451 fprintf(tracing_file, "%d %lf %s %s\n",
454 ((destroyContainer_t)event->data)->container->type->id,
455 ((destroyContainer_t)event->data)->container->id);
459 static void print_pajeSetVariable(paje_event_t event)
461 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
462 if (event->timestamp == 0){
463 fprintf(tracing_file, "%d 0 %s %s %f\n",
465 ((setVariable_t)event->data)->type->id,
466 ((setVariable_t)event->data)->container->id,
467 ((setVariable_t)event->data)->value);
469 fprintf(tracing_file, "%d %lf %s %s %f\n",
472 ((setVariable_t)event->data)->type->id,
473 ((setVariable_t)event->data)->container->id,
474 ((setVariable_t)event->data)->value);
478 static void print_pajeAddVariable(paje_event_t event)
480 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
481 if (event->timestamp == 0){
482 fprintf(tracing_file, "%d 0 %s %s %f\n",
484 ((addVariable_t)event->data)->type->id,
485 ((addVariable_t)event->data)->container->id,
486 ((addVariable_t)event->data)->value);
488 fprintf(tracing_file, "%d %lf %s %s %f\n",
491 ((addVariable_t)event->data)->type->id,
492 ((addVariable_t)event->data)->container->id,
493 ((addVariable_t)event->data)->value);
497 static void print_pajeSubVariable(paje_event_t event)
499 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
500 if (event->timestamp == 0){
501 fprintf(tracing_file, "%d 0 %s %s %f\n",
503 ((subVariable_t)event->data)->type->id,
504 ((subVariable_t)event->data)->container->id,
505 ((subVariable_t)event->data)->value);
507 fprintf(tracing_file, "%d %lf %s %s %f\n",
510 ((subVariable_t)event->data)->type->id,
511 ((subVariable_t)event->data)->container->id,
512 ((subVariable_t)event->data)->value);
516 static void print_pajeSetState(paje_event_t event)
518 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
519 if (event->timestamp == 0){
520 fprintf(tracing_file, "%d 0 %s %s %s\n",
522 ((setState_t)event->data)->type->id,
523 ((setState_t)event->data)->container->id,
524 ((setState_t)event->data)->value->id);
526 fprintf(tracing_file, "%d %lf %s %s %s\n",
529 ((setState_t)event->data)->type->id,
530 ((setState_t)event->data)->container->id,
531 ((setState_t)event->data)->value->id);
535 static void print_pajePushState(paje_event_t event)
537 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
538 if (event->timestamp == 0){
539 fprintf(tracing_file, "%d 0 %s %s %s\n",
541 ((pushState_t)event->data)->type->id,
542 ((pushState_t)event->data)->container->id,
543 ((pushState_t)event->data)->value->id);
545 fprintf(tracing_file, "%d %lf %s %s %s\n",
548 ((pushState_t)event->data)->type->id,
549 ((pushState_t)event->data)->container->id,
550 ((pushState_t)event->data)->value->id);
554 static void print_pajePopState(paje_event_t event)
556 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
557 if (event->timestamp == 0){
558 fprintf(tracing_file, "%d 0 %s %s\n",
560 ((popState_t)event->data)->type->id,
561 ((popState_t)event->data)->container->id);
563 fprintf(tracing_file, "%d %lf %s %s\n",
566 ((popState_t)event->data)->type->id,
567 ((popState_t)event->data)->container->id);
571 static void print_pajeStartLink(paje_event_t event)
573 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
574 if (event->timestamp == 0){
575 fprintf(tracing_file, "%d 0 %s %s %s %s %s\n",
577 ((startLink_t)event->data)->type->id,
578 ((startLink_t)event->data)->container->id,
579 ((startLink_t)event->data)->value,
580 ((startLink_t)event->data)->sourceContainer->id,
581 ((startLink_t)event->data)->key);
583 fprintf(tracing_file, "%d %lf %s %s %s %s %s\n",
586 ((startLink_t)event->data)->type->id,
587 ((startLink_t)event->data)->container->id,
588 ((startLink_t)event->data)->value,
589 ((startLink_t)event->data)->sourceContainer->id,
590 ((startLink_t)event->data)->key);
594 static void print_pajeEndLink(paje_event_t event)
596 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
597 if (event->timestamp == 0){
598 fprintf(tracing_file, "%d 0 %s %s %s %s %s\n",
600 ((endLink_t)event->data)->type->id,
601 ((endLink_t)event->data)->container->id,
602 ((endLink_t)event->data)->value,
603 ((endLink_t)event->data)->destContainer->id,
604 ((endLink_t)event->data)->key);
606 fprintf(tracing_file, "%d %lf %s %s %s %s %s\n",
609 ((endLink_t)event->data)->type->id,
610 ((endLink_t)event->data)->container->id,
611 ((endLink_t)event->data)->value,
612 ((endLink_t)event->data)->destContainer->id,
613 ((endLink_t)event->data)->key);
617 static void print_pajeNewEvent (paje_event_t event)
619 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
620 if (event->timestamp == 0){
621 fprintf(tracing_file, "%d 0 %s %s %s\n",
623 ((newEvent_t)event->data)->type->id,
624 ((newEvent_t)event->data)->container->id,
625 ((newEvent_t)event->data)->value->id);
627 fprintf(tracing_file, "%d %lf %s %s %s\n",
630 ((newEvent_t)event->data)->type->id,
631 ((newEvent_t)event->data)->container->id,
632 ((newEvent_t)event->data)->value->id);
636 static void free_paje_event (paje_event_t event)
638 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
639 if (event->event_type == PAJE_StartLink){
640 xbt_free (((startLink_t)(event->data))->value);
641 xbt_free (((startLink_t)(event->data))->key);
642 }else if (event->event_type == PAJE_EndLink){
643 xbt_free (((endLink_t)(event->data))->value);
644 xbt_free (((endLink_t)(event->data))->key);
646 xbt_free (event->data);
650 void new_pajeDefineContainerType(type_t type)
652 paje_event_t event = xbt_new0(s_paje_event_t, 1);
653 event->event_type = PAJE_DefineContainerType;
654 event->timestamp = 0;
655 event->print = print_pajeDefineContainerType;
656 event->free = free_paje_event;
657 event->data = xbt_new0(s_defineContainerType_t, 1);
658 ((defineContainerType_t)(event->data))->type = type;
660 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, event->event_type);
663 event->print (event);
667 void new_pajeDefineVariableType(type_t type)
669 paje_event_t event = xbt_new0(s_paje_event_t, 1);
670 event->event_type = PAJE_DefineVariableType;
671 event->timestamp = 0;
672 event->print = print_pajeDefineVariableType;
673 event->free = free_paje_event;
674 event->data = xbt_new0(s_defineVariableType_t, 1);
675 ((defineVariableType_t)(event->data))->type = type;
677 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, event->event_type);
680 event->print (event);
684 void new_pajeDefineStateType(type_t type)
686 paje_event_t event = xbt_new0(s_paje_event_t, 1);
687 event->event_type = PAJE_DefineStateType;
688 event->timestamp = 0;
689 event->print = print_pajeDefineStateType;
690 event->free = free_paje_event;
691 event->data = xbt_new0(s_defineStateType_t, 1);
692 ((defineStateType_t)(event->data))->type = type;
694 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, event->event_type);
697 event->print (event);
701 void new_pajeDefineEventType(type_t type)
703 paje_event_t event = xbt_new0(s_paje_event_t, 1);
704 event->event_type = PAJE_DefineEventType;
705 event->timestamp = 0;
706 event->print = print_pajeDefineEventType;
707 event->free = free_paje_event;
708 event->data = xbt_new0(s_defineEventType_t, 1);
709 ((defineEventType_t)(event->data))->type = type;
711 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, event->event_type);
714 event->print (event);
718 void new_pajeDefineLinkType(type_t type, type_t source, type_t dest)
720 paje_event_t event = xbt_new0(s_paje_event_t, 1);
721 event->event_type = PAJE_DefineLinkType;
722 event->timestamp = 0;
723 event->print = print_pajeDefineLinkType;
724 event->free = free_paje_event;
725 event->data = xbt_new0(s_defineLinkType_t, 1);
726 ((defineLinkType_t)(event->data))->type = type;
727 ((defineLinkType_t)(event->data))->source = source;
728 ((defineLinkType_t)(event->data))->dest = dest;
730 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, event->event_type);
733 event->print (event);
737 void new_pajeDefineEntityValue (val_t value)
739 paje_event_t event = xbt_new0(s_paje_event_t, 1);
740 event->event_type = PAJE_DefineEntityValue;
741 event->timestamp = 0;
742 event->print = print_pajeDefineEntityValue;
743 event->free = free_paje_event;
744 event->data = xbt_new0(s_defineEntityValue_t, 1);
745 ((defineEntityValue_t)(event->data))->value = value;
747 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, event->event_type);
750 event->print (event);
754 void new_pajeCreateContainer (container_t container)
756 paje_event_t event = xbt_new0(s_paje_event_t, 1);
757 event->event_type = PAJE_CreateContainer;
758 event->timestamp = SIMIX_get_clock();
759 event->print = print_pajeCreateContainer;
760 event->free = free_paje_event;
761 event->data = xbt_new0(s_createContainer_t, 1);
762 ((createContainer_t)(event->data))->container = container;
764 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
767 event->print (event);
771 void new_pajeDestroyContainer (container_t container)
773 paje_event_t event = xbt_new0(s_paje_event_t, 1);
774 event->event_type = PAJE_DestroyContainer;
775 event->timestamp = SIMIX_get_clock();
776 event->print = print_pajeDestroyContainer;
777 event->free = free_paje_event;
778 event->data = xbt_new0(s_destroyContainer_t, 1);
779 ((destroyContainer_t)(event->data))->container = container;
781 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
784 event->print (event);
788 void new_pajeSetVariable (double timestamp, container_t container, type_t type, double value)
790 paje_event_t event = xbt_new0(s_paje_event_t, 1);
791 event->event_type = PAJE_SetVariable;
792 event->timestamp = timestamp;
793 event->print = print_pajeSetVariable;
794 event->free = free_paje_event;
795 event->data = xbt_new0(s_setVariable_t, 1);
796 ((setVariable_t)(event->data))->type = type;
797 ((setVariable_t)(event->data))->container = container;
798 ((setVariable_t)(event->data))->value = value;
800 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
802 insert_into_buffer (event);
806 void new_pajeAddVariable (double timestamp, container_t container, type_t type, double value)
808 paje_event_t event = xbt_new0(s_paje_event_t, 1);
809 event->event_type = PAJE_AddVariable;
810 event->timestamp = timestamp;
811 event->print = print_pajeAddVariable;
812 event->free = free_paje_event;
813 event->data = xbt_new0(s_addVariable_t, 1);
814 ((addVariable_t)(event->data))->type = type;
815 ((addVariable_t)(event->data))->container = container;
816 ((addVariable_t)(event->data))->value = value;
818 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
820 insert_into_buffer (event);
823 void new_pajeSubVariable (double timestamp, container_t container, type_t type, double value)
825 paje_event_t event = xbt_new0(s_paje_event_t, 1);
826 event->event_type = PAJE_SubVariable;
827 event->timestamp = timestamp;
828 event->print = print_pajeSubVariable;
829 event->free = free_paje_event;
830 event->data = xbt_new0(s_subVariable_t, 1);
831 ((subVariable_t)(event->data))->type = type;
832 ((subVariable_t)(event->data))->container = container;
833 ((subVariable_t)(event->data))->value = value;
835 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
837 insert_into_buffer (event);
840 void new_pajeSetState (double timestamp, container_t container, type_t type, val_t value)
842 paje_event_t event = xbt_new0(s_paje_event_t, 1);
843 event->event_type = PAJE_SetState;
844 event->timestamp = timestamp;
845 event->print = print_pajeSetState;
846 event->free = free_paje_event;
847 event->data = xbt_new0(s_setState_t, 1);
848 ((setState_t)(event->data))->type = type;
849 ((setState_t)(event->data))->container = container;
850 ((setState_t)(event->data))->value = value;
852 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
854 insert_into_buffer (event);
858 void new_pajePushState (double timestamp, container_t container, type_t type, val_t value)
860 paje_event_t event = xbt_new0(s_paje_event_t, 1);
861 event->event_type = PAJE_PushState;
862 event->timestamp = timestamp;
863 event->print = print_pajePushState;
864 event->free = free_paje_event;
865 event->data = xbt_new0(s_pushState_t, 1);
866 ((pushState_t)(event->data))->type = type;
867 ((pushState_t)(event->data))->container = container;
868 ((pushState_t)(event->data))->value = value;
870 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
872 insert_into_buffer (event);
876 void new_pajePopState (double timestamp, container_t container, type_t type)
878 paje_event_t event = xbt_new0(s_paje_event_t, 1);
879 event->event_type = PAJE_PopState;
880 event->timestamp = timestamp;
881 event->print = print_pajePopState;
882 event->free = free_paje_event;
883 event->data = xbt_new0(s_popState_t, 1);
884 ((popState_t)(event->data))->type = type;
885 ((popState_t)(event->data))->container = container;
887 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
889 insert_into_buffer (event);
892 void new_pajeStartLink (double timestamp, container_t container, type_t type, container_t sourceContainer, const char *value, const char *key)
894 paje_event_t event = xbt_new0(s_paje_event_t, 1);
895 event->event_type = PAJE_StartLink;
896 event->timestamp = timestamp;
897 event->print = print_pajeStartLink;
898 event->free = free_paje_event;
899 event->data = xbt_new0(s_startLink_t, 1);
900 ((startLink_t)(event->data))->type = type;
901 ((startLink_t)(event->data))->container = container;
902 ((startLink_t)(event->data))->sourceContainer = sourceContainer;
903 ((startLink_t)(event->data))->value = xbt_strdup(value);
904 ((startLink_t)(event->data))->key = xbt_strdup(key);
906 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
908 insert_into_buffer (event);
911 void new_pajeEndLink (double timestamp, container_t container, type_t type, container_t destContainer, const char *value, const char *key)
913 paje_event_t event = xbt_new0(s_paje_event_t, 1);
914 event->event_type = PAJE_EndLink;
915 event->timestamp = timestamp;
916 event->print = print_pajeEndLink;
917 event->free = free_paje_event;
918 event->data = xbt_new0(s_endLink_t, 1);
919 ((endLink_t)(event->data))->type = type;
920 ((endLink_t)(event->data))->container = container;
921 ((endLink_t)(event->data))->destContainer = destContainer;
922 ((endLink_t)(event->data))->value = xbt_strdup(value);
923 ((endLink_t)(event->data))->key = xbt_strdup(key);
925 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
927 insert_into_buffer (event);
930 void new_pajeNewEvent (double timestamp, container_t container, type_t type, val_t value)
932 paje_event_t event = xbt_new0(s_paje_event_t, 1);
933 event->event_type = PAJE_NewEvent;
934 event->timestamp = timestamp;
935 event->print = print_pajeNewEvent;
936 event->free = free_paje_event;
937 event->data = xbt_new0(s_newEvent_t, 1);
938 ((newEvent_t)(event->data))->type = type;
939 ((newEvent_t)(event->data))->container = container;
940 ((newEvent_t)(event->data))->value = value;
942 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, event->event_type, event->timestamp);
944 insert_into_buffer (event);
947 #endif /* HAVE_TRACING */