1 /* Copyright (c) 2010-2013. 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"
8 #include "xbt/virtu.h" /* sg_cmdline */
12 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(instr_paje_trace, instr, "Paje tracing event system");
14 typedef struct paje_event *paje_event_t;
15 typedef struct paje_event {
17 e_event_type event_type;
18 void (*print) (paje_event_t event);
19 void (*free) (paje_event_t event);
23 typedef struct s_defineContainerType *defineContainerType_t;
24 typedef struct s_defineContainerType {
26 }s_defineContainerType_t;
28 typedef struct s_defineVariableType *defineVariableType_t;
29 typedef struct s_defineVariableType {
31 }s_defineVariableType_t;
33 typedef struct s_defineStateType *defineStateType_t;
34 typedef struct s_defineStateType {
38 typedef struct s_defineEventType *defineEventType_t;
39 typedef struct s_defineEventType {
43 typedef struct s_defineLinkType *defineLinkType_t;
44 typedef struct s_defineLinkType {
50 typedef struct s_defineEntityValue *defineEntityValue_t;
51 typedef struct s_defineEntityValue {
53 }s_defineEntityValue_t;
55 typedef struct s_createContainer *createContainer_t;
56 typedef struct s_createContainer {
57 container_t container;
60 typedef struct s_destroyContainer *destroyContainer_t;
61 typedef struct s_destroyContainer {
62 container_t container;
63 }s_destroyContainer_t;
65 typedef struct s_setVariable *setVariable_t;
66 typedef struct s_setVariable {
67 container_t container;
72 typedef struct s_addVariable *addVariable_t;
73 typedef struct s_addVariable {
74 container_t container;
79 typedef struct s_subVariable *subVariable_t;
80 typedef struct s_subVariable {
81 container_t container;
86 typedef struct s_setState *setState_t;
87 typedef struct s_setState {
88 container_t container;
93 typedef struct s_pushState *pushState_t;
94 typedef struct s_pushState {
95 container_t container;
101 typedef struct s_popState *popState_t;
102 typedef struct s_popState {
103 container_t container;
107 typedef struct s_resetState *resetState_t;
108 typedef struct s_resetState {
109 container_t container;
113 typedef struct s_startLink *startLink_t;
114 typedef struct s_startLink {
115 container_t container;
117 container_t sourceContainer;
123 typedef struct s_endLink *endLink_t;
124 typedef struct s_endLink {
125 container_t container;
127 container_t destContainer;
132 typedef struct s_newEvent *newEvent_t;
133 typedef struct s_newEvent {
134 container_t container;
139 FILE *tracing_file = NULL;
141 static xbt_dynar_t buffer = NULL;
143 static void dump_comment (const char *comment)
145 if (!strlen(comment)) return;
146 fprintf (tracing_file, "# %s\n", comment);
149 static void dump_comment_file (const char *filename)
151 if (!strlen(filename)) return;
152 FILE *file = fopen (filename, "r");
154 THROWF (system_error, 1, "Comment file %s could not be opened for reading.", filename);
159 if (feof(file)) break;
160 fprintf (tracing_file, "# ");
162 fprintf (tracing_file, "%c", c);
164 if (feof(file)) break;
166 fprintf (tracing_file, "\n");
172 void TRACE_paje_start(void)
174 char *filename = TRACE_get_filename();
175 tracing_file = fopen(filename, "w");
176 if (tracing_file == NULL){
177 THROWF (system_error, 1, "Tracefile %s could not be opened for writing.", filename);
180 XBT_DEBUG("Filename %s is open for writing", filename);
182 /* output generator version */
183 fprintf (tracing_file, "#This file was generated using SimGrid-%d.%d.%d\n", SIMGRID_VERSION_MAJOR, SIMGRID_VERSION_MINOR, SIMGRID_VERSION_PATCH);
184 fprintf (tracing_file, "#[");
187 xbt_dynar_foreach (xbt_cmdline, cpt, str){
188 fprintf(tracing_file, "%s ",str);
190 fprintf (tracing_file, "]\n");
192 /* output one line comment */
193 dump_comment (TRACE_get_comment());
195 /* output comment file */
196 dump_comment_file (TRACE_get_comment_file());
199 TRACE_header(TRACE_basic(),TRACE_display_sizes());
201 buffer = xbt_dynar_new (sizeof(paje_event_t), NULL);
204 void TRACE_paje_end(void)
206 fclose(tracing_file);
207 char *filename = TRACE_get_filename();
208 xbt_dynar_free (&buffer);
209 XBT_DEBUG("Filename %s is closed", filename);
212 double TRACE_last_timestamp_to_dump = 0;
213 //dumps the trace file until the timestamp TRACE_last_timestamp_to_dump
214 void TRACE_paje_dump_buffer (int force)
216 if (!TRACE_is_enabled()) return;
217 XBT_DEBUG("%s: dump until %f. starts", __FUNCTION__, TRACE_last_timestamp_to_dump);
221 xbt_dynar_foreach(buffer, i, event){
222 event->print (event);
225 xbt_dynar_free (&buffer);
226 buffer = xbt_dynar_new (sizeof(paje_event_t), NULL);
230 xbt_dynar_foreach(buffer, cursor, event) {
231 double head_timestamp = event->timestamp;
232 if (head_timestamp > TRACE_last_timestamp_to_dump){
235 event->print (event);
238 xbt_dynar_remove_n_at(buffer, cursor, 0);
240 XBT_DEBUG("%s: ends", __FUNCTION__);
243 /* internal do the instrumentation module */
244 static void insert_into_buffer (paje_event_t tbi)
246 if (TRACE_buffer() == 0){
251 XBT_DEBUG("%s: insert event_type=%d, timestamp=%f, buffersize=%lu)",
252 __FUNCTION__, (int)tbi->event_type, tbi->timestamp, xbt_dynar_length(buffer));
255 for (i = xbt_dynar_length(buffer); i > 0; i--) {
256 paje_event_t e1 = *(paje_event_t*)xbt_dynar_get_ptr(buffer, i - 1);
257 if (e1->timestamp <= tbi->timestamp)
260 xbt_dynar_insert_at(buffer, i, &tbi);
262 XBT_DEBUG("%s: inserted at beginning", __FUNCTION__);
264 XBT_DEBUG("%s: inserted at%s %u", __FUNCTION__,
265 (i == xbt_dynar_length(buffer) - 1 ? " end, pos =" : ""), i);
268 static void print_pajeDefineContainerType(paje_event_t event)
270 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
271 fprintf(tracing_file, "%d %s %s %s\n",
272 (int)event->event_type,
273 ((defineContainerType_t)event->data)->type->id,
274 ((defineContainerType_t)event->data)->type->father->id,
275 ((defineContainerType_t)event->data)->type->name);
278 static void print_pajeDefineVariableType(paje_event_t event)
280 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
281 fprintf(tracing_file, "%d %s %s %s \"%s\"\n",
282 (int)event->event_type,
283 ((defineVariableType_t)event->data)->type->id,
284 ((defineVariableType_t)event->data)->type->father->id,
285 ((defineVariableType_t)event->data)->type->name,
286 ((defineVariableType_t)event->data)->type->color);
289 static void print_pajeDefineStateType(paje_event_t event)
291 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
292 fprintf(tracing_file, "%d %s %s %s\n",
293 (int)event->event_type,
294 ((defineStateType_t)event->data)->type->id,
295 ((defineStateType_t)event->data)->type->father->id,
296 ((defineStateType_t)event->data)->type->name);
299 static void print_pajeDefineEventType(paje_event_t event)
301 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
302 fprintf(tracing_file, "%d %s %s %s\n",
303 (int)event->event_type,
304 ((defineEventType_t)event->data)->type->id,
305 ((defineEventType_t)event->data)->type->father->id,
306 ((defineEventType_t)event->data)->type->name);
309 static void print_pajeDefineLinkType(paje_event_t event)
311 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
312 fprintf(tracing_file, "%d %s %s %s %s %s\n",
313 (int)event->event_type,
314 ((defineLinkType_t)event->data)->type->id,
315 ((defineLinkType_t)event->data)->type->father->id,
316 ((defineLinkType_t)event->data)->source->id,
317 ((defineLinkType_t)event->data)->dest->id,
318 ((defineLinkType_t)event->data)->type->name);
321 static void print_pajeDefineEntityValue (paje_event_t event)
323 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
324 fprintf(tracing_file, "%d %s %s %s \"%s\"\n",
325 (int)event->event_type,
326 ((defineEntityValue_t)event->data)->value->id,
327 ((defineEntityValue_t)event->data)->value->father->id,
328 ((defineEntityValue_t)event->data)->value->name,
329 ((defineEntityValue_t)event->data)->value->color);
332 static void print_pajeCreateContainer(paje_event_t event)
334 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
335 if (event->timestamp == 0){
336 fprintf(tracing_file, "%d 0 %s %s %s \"%s\"\n",
337 (int)event->event_type,
338 ((createContainer_t)event->data)->container->id,
339 ((createContainer_t)event->data)->container->type->id,
340 ((createContainer_t)event->data)->container->father->id,
341 ((createContainer_t)event->data)->container->name);
343 fprintf(tracing_file, "%d %lf %s %s %s \"%s\"\n",
344 (int)event->event_type,
346 ((createContainer_t)event->data)->container->id,
347 ((createContainer_t)event->data)->container->type->id,
348 ((createContainer_t)event->data)->container->father->id,
349 ((createContainer_t)event->data)->container->name);
353 static void print_pajeDestroyContainer(paje_event_t event)
355 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
356 if (event->timestamp == 0){
357 fprintf(tracing_file, "%d 0 %s %s\n",
358 (int)event->event_type,
359 ((destroyContainer_t)event->data)->container->type->id,
360 ((destroyContainer_t)event->data)->container->id);
362 fprintf(tracing_file, "%d %lf %s %s\n",
363 (int)event->event_type,
365 ((destroyContainer_t)event->data)->container->type->id,
366 ((destroyContainer_t)event->data)->container->id);
370 static void print_pajeSetVariable(paje_event_t event)
372 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
373 if (event->timestamp == 0){
374 fprintf(tracing_file, "%d 0 %s %s %f\n",
375 (int)event->event_type,
376 ((setVariable_t)event->data)->type->id,
377 ((setVariable_t)event->data)->container->id,
378 ((setVariable_t)event->data)->value);
380 fprintf(tracing_file, "%d %lf %s %s %f\n",
381 (int)event->event_type,
383 ((setVariable_t)event->data)->type->id,
384 ((setVariable_t)event->data)->container->id,
385 ((setVariable_t)event->data)->value);
389 static void print_pajeAddVariable(paje_event_t event)
391 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
392 if (event->timestamp == 0){
393 fprintf(tracing_file, "%d 0 %s %s %f\n",
394 (int)event->event_type,
395 ((addVariable_t)event->data)->type->id,
396 ((addVariable_t)event->data)->container->id,
397 ((addVariable_t)event->data)->value);
399 fprintf(tracing_file, "%d %lf %s %s %f\n",
400 (int)event->event_type,
402 ((addVariable_t)event->data)->type->id,
403 ((addVariable_t)event->data)->container->id,
404 ((addVariable_t)event->data)->value);
408 static void print_pajeSubVariable(paje_event_t event)
410 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
411 if (event->timestamp == 0){
412 fprintf(tracing_file, "%d 0 %s %s %f\n",
413 (int)event->event_type,
414 ((subVariable_t)event->data)->type->id,
415 ((subVariable_t)event->data)->container->id,
416 ((subVariable_t)event->data)->value);
418 fprintf(tracing_file, "%d %lf %s %s %f\n",
419 (int)event->event_type,
421 ((subVariable_t)event->data)->type->id,
422 ((subVariable_t)event->data)->container->id,
423 ((subVariable_t)event->data)->value);
427 static void print_pajeSetState(paje_event_t event)
429 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
430 if (event->timestamp == 0){
431 fprintf(tracing_file, "%d 0 %s %s %s\n",
432 (int)event->event_type,
433 ((setState_t)event->data)->type->id,
434 ((setState_t)event->data)->container->id,
435 ((setState_t)event->data)->value->id);
437 fprintf(tracing_file, "%d %lf %s %s %s\n",
438 (int)event->event_type,
440 ((setState_t)event->data)->type->id,
441 ((setState_t)event->data)->container->id,
442 ((setState_t)event->data)->value->id);
446 static void print_pajePushState(paje_event_t event)
448 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
449 if (!TRACE_display_sizes()){
450 if (event->timestamp == 0){
451 fprintf(tracing_file, "%d 0 %s %s %s\n",
452 (int)event->event_type,
453 ((pushState_t)event->data)->type->id,
454 ((pushState_t)event->data)->container->id,
455 ((pushState_t)event->data)->value->id);
457 fprintf(tracing_file, "%d %lf %s %s %s\n",
458 (int)event->event_type,
460 ((pushState_t)event->data)->type->id,
461 ((pushState_t)event->data)->container->id,
462 ((pushState_t)event->data)->value->id);
465 if (event->timestamp == 0){
466 fprintf(tracing_file, "%d 0 %s %s %s %d\n",
467 (int)event->event_type,
468 ((pushState_t)event->data)->type->id,
469 ((pushState_t)event->data)->container->id,
470 ((pushState_t)event->data)->value->id,
471 ((pushState_t)event->data)->size);
473 fprintf(tracing_file, "%d %lf %s %s %s %d\n",
474 (int)event->event_type,
476 ((pushState_t)event->data)->type->id,
477 ((pushState_t)event->data)->container->id,
478 ((pushState_t)event->data)->value->id,
479 ((pushState_t)event->data)->size);
485 static void print_pajePopState(paje_event_t event)
487 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
488 if (event->timestamp == 0){
489 fprintf(tracing_file, "%d 0 %s %s\n",
490 (int)event->event_type,
491 ((popState_t)event->data)->type->id,
492 ((popState_t)event->data)->container->id);
494 fprintf(tracing_file, "%d %lf %s %s\n",
495 (int)event->event_type,
497 ((popState_t)event->data)->type->id,
498 ((popState_t)event->data)->container->id);
502 static void print_pajeResetState(paje_event_t event)
504 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
505 if (event->timestamp == 0){
506 fprintf(tracing_file, "%d 0 %s %s\n",
507 (int)event->event_type,
508 ((resetState_t)event->data)->type->id,
509 ((resetState_t)event->data)->container->id);
511 fprintf(tracing_file, "%d %lf %s %s\n",
512 (int)event->event_type,
514 ((resetState_t)event->data)->type->id,
515 ((resetState_t)event->data)->container->id);
519 static void print_pajeStartLink(paje_event_t event)
521 if (!TRACE_display_sizes()){
522 if (event->timestamp == 0){
523 fprintf(tracing_file, "%d 0 %s %s %s %s %s\n",
524 (int)event->event_type,
525 ((startLink_t)event->data)->type->id,
526 ((startLink_t)event->data)->container->id,
527 ((startLink_t)event->data)->value,
528 ((startLink_t)event->data)->sourceContainer->id,
529 ((startLink_t)event->data)->key);
531 fprintf(tracing_file, "%d %lf %s %s %s %s %s\n",
532 (int)event->event_type,
534 ((startLink_t)event->data)->type->id,
535 ((startLink_t)event->data)->container->id,
536 ((startLink_t)event->data)->value,
537 ((startLink_t)event->data)->sourceContainer->id,
538 ((startLink_t)event->data)->key);
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 %s %s %d\n",
544 (int)event->event_type,
545 ((startLink_t)event->data)->type->id,
546 ((startLink_t)event->data)->container->id,
547 ((startLink_t)event->data)->value,
548 ((startLink_t)event->data)->sourceContainer->id,
549 ((startLink_t)event->data)->key,
550 ((startLink_t)event->data)->size);
552 fprintf(tracing_file, "%d %lf %s %s %s %s %s %d\n",
553 (int)event->event_type,
555 ((startLink_t)event->data)->type->id,
556 ((startLink_t)event->data)->container->id,
557 ((startLink_t)event->data)->value,
558 ((startLink_t)event->data)->sourceContainer->id,
559 ((startLink_t)event->data)->key,
560 ((startLink_t)event->data)->size);
565 static void print_pajeEndLink(paje_event_t event)
567 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
568 if (event->timestamp == 0){
569 fprintf(tracing_file, "%d 0 %s %s %s %s %s\n",
570 (int)event->event_type,
571 ((endLink_t)event->data)->type->id,
572 ((endLink_t)event->data)->container->id,
573 ((endLink_t)event->data)->value,
574 ((endLink_t)event->data)->destContainer->id,
575 ((endLink_t)event->data)->key);
577 fprintf(tracing_file, "%d %lf %s %s %s %s %s\n",
578 (int)event->event_type,
580 ((endLink_t)event->data)->type->id,
581 ((endLink_t)event->data)->container->id,
582 ((endLink_t)event->data)->value,
583 ((endLink_t)event->data)->destContainer->id,
584 ((endLink_t)event->data)->key);
588 static void print_pajeNewEvent (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 %s\n",
593 (int)event->event_type,
594 ((newEvent_t)event->data)->type->id,
595 ((newEvent_t)event->data)->container->id,
596 ((newEvent_t)event->data)->value->id);
598 fprintf(tracing_file, "%d %lf %s %s %s\n",
599 (int)event->event_type,
601 ((newEvent_t)event->data)->type->id,
602 ((newEvent_t)event->data)->container->id,
603 ((newEvent_t)event->data)->value->id);
607 static void free_paje_event (paje_event_t event)
609 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
610 switch (event->event_type){
612 xbt_free (((startLink_t)(event->data))->value);
613 xbt_free (((startLink_t)(event->data))->key);
616 xbt_free (((endLink_t)(event->data))->value);
617 xbt_free (((endLink_t)(event->data))->key);
622 xbt_free (event->data);
626 void new_pajeDefineContainerType(type_t type)
628 paje_event_t event = xbt_new0(s_paje_event_t, 1);
629 event->event_type = PAJE_DefineContainerType;
630 event->timestamp = 0;
631 event->print = print_pajeDefineContainerType;
632 event->free = free_paje_event;
633 event->data = xbt_new0(s_defineContainerType_t, 1);
634 ((defineContainerType_t)(event->data))->type = type;
636 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
639 event->print (event);
643 void new_pajeDefineVariableType(type_t type)
645 paje_event_t event = xbt_new0(s_paje_event_t, 1);
646 event->event_type = PAJE_DefineVariableType;
647 event->timestamp = 0;
648 event->print = print_pajeDefineVariableType;
649 event->free = free_paje_event;
650 event->data = xbt_new0(s_defineVariableType_t, 1);
651 ((defineVariableType_t)(event->data))->type = type;
653 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
656 event->print (event);
660 void new_pajeDefineStateType(type_t type)
662 paje_event_t event = xbt_new0(s_paje_event_t, 1);
663 event->event_type = PAJE_DefineStateType;
664 event->timestamp = 0;
665 event->print = print_pajeDefineStateType;
666 event->free = free_paje_event;
667 event->data = xbt_new0(s_defineStateType_t, 1);
668 ((defineStateType_t)(event->data))->type = type;
670 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
673 event->print (event);
677 void new_pajeDefineEventType(type_t type)
679 paje_event_t event = xbt_new0(s_paje_event_t, 1);
680 event->event_type = PAJE_DefineEventType;
681 event->timestamp = 0;
682 event->print = print_pajeDefineEventType;
683 event->free = free_paje_event;
684 event->data = xbt_new0(s_defineEventType_t, 1);
685 ((defineEventType_t)(event->data))->type = type;
687 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
690 event->print (event);
694 void new_pajeDefineLinkType(type_t type, type_t source, type_t dest)
696 paje_event_t event = xbt_new0(s_paje_event_t, 1);
697 event->event_type = PAJE_DefineLinkType;
698 event->timestamp = 0;
699 event->print = print_pajeDefineLinkType;
700 event->free = free_paje_event;
701 event->data = xbt_new0(s_defineLinkType_t, 1);
702 ((defineLinkType_t)(event->data))->type = type;
703 ((defineLinkType_t)(event->data))->source = source;
704 ((defineLinkType_t)(event->data))->dest = dest;
706 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
709 event->print (event);
713 void new_pajeDefineEntityValue (val_t value)
715 paje_event_t event = xbt_new0(s_paje_event_t, 1);
716 event->event_type = PAJE_DefineEntityValue;
717 event->timestamp = 0;
718 event->print = print_pajeDefineEntityValue;
719 event->free = free_paje_event;
720 event->data = xbt_new0(s_defineEntityValue_t, 1);
721 ((defineEntityValue_t)(event->data))->value = value;
723 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
726 event->print (event);
730 void new_pajeCreateContainer (container_t container)
732 paje_event_t event = xbt_new0(s_paje_event_t, 1);
733 event->event_type = PAJE_CreateContainer;
734 event->timestamp = SIMIX_get_clock();
735 event->print = print_pajeCreateContainer;
736 event->free = free_paje_event;
737 event->data = xbt_new0(s_createContainer_t, 1);
738 ((createContainer_t)(event->data))->container = container;
740 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
743 event->print (event);
747 void new_pajeDestroyContainer (container_t container)
749 paje_event_t event = xbt_new0(s_paje_event_t, 1);
750 event->event_type = PAJE_DestroyContainer;
751 event->timestamp = SIMIX_get_clock();
752 event->print = print_pajeDestroyContainer;
753 event->free = free_paje_event;
754 event->data = xbt_new0(s_destroyContainer_t, 1);
755 ((destroyContainer_t)(event->data))->container = container;
757 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
760 event->print (event);
764 void new_pajeSetVariable (double timestamp, container_t container, type_t type, double value)
766 paje_event_t event = xbt_new0(s_paje_event_t, 1);
767 event->event_type = PAJE_SetVariable;
768 event->timestamp = timestamp;
769 event->print = print_pajeSetVariable;
770 event->free = free_paje_event;
771 event->data = xbt_new0(s_setVariable_t, 1);
772 ((setVariable_t)(event->data))->type = type;
773 ((setVariable_t)(event->data))->container = container;
774 ((setVariable_t)(event->data))->value = value;
776 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
778 insert_into_buffer (event);
782 void new_pajeAddVariable (double timestamp, container_t container, type_t type, double value)
784 paje_event_t event = xbt_new0(s_paje_event_t, 1);
785 event->event_type = PAJE_AddVariable;
786 event->timestamp = timestamp;
787 event->print = print_pajeAddVariable;
788 event->free = free_paje_event;
789 event->data = xbt_new0(s_addVariable_t, 1);
790 ((addVariable_t)(event->data))->type = type;
791 ((addVariable_t)(event->data))->container = container;
792 ((addVariable_t)(event->data))->value = value;
794 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
796 insert_into_buffer (event);
799 void new_pajeSubVariable (double timestamp, container_t container, type_t type, double value)
801 paje_event_t event = xbt_new0(s_paje_event_t, 1);
802 event->event_type = PAJE_SubVariable;
803 event->timestamp = timestamp;
804 event->print = print_pajeSubVariable;
805 event->free = free_paje_event;
806 event->data = xbt_new0(s_subVariable_t, 1);
807 ((subVariable_t)(event->data))->type = type;
808 ((subVariable_t)(event->data))->container = container;
809 ((subVariable_t)(event->data))->value = value;
811 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
813 insert_into_buffer (event);
816 void new_pajeSetState (double timestamp, container_t container, type_t type, val_t value)
818 paje_event_t event = xbt_new0(s_paje_event_t, 1);
819 event->event_type = PAJE_SetState;
820 event->timestamp = timestamp;
821 event->print = print_pajeSetState;
822 event->free = free_paje_event;
823 event->data = xbt_new0(s_setState_t, 1);
824 ((setState_t)(event->data))->type = type;
825 ((setState_t)(event->data))->container = container;
826 ((setState_t)(event->data))->value = value;
828 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
830 insert_into_buffer (event);
834 void new_pajePushState (double timestamp, container_t container, type_t type, val_t value)
836 paje_event_t event = xbt_new0(s_paje_event_t, 1);
837 event->event_type = PAJE_PushState;
838 event->timestamp = timestamp;
839 event->print = print_pajePushState;
840 event->free = free_paje_event;
841 event->data = xbt_new0(s_pushState_t, 1);
842 ((pushState_t)(event->data))->type = type;
843 ((pushState_t)(event->data))->container = container;
844 ((pushState_t)(event->data))->value = value;
845 ((pushState_t)(event->data))->size = -1;
847 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
849 insert_into_buffer (event);
852 void new_pajePushStateWithSize (double timestamp, container_t container, type_t type, val_t value, int size)
854 paje_event_t event = xbt_new0(s_paje_event_t, 1);
855 event->event_type = PAJE_PushState;
856 event->timestamp = timestamp;
857 event->print = print_pajePushState;
858 event->free = free_paje_event;
859 event->data = xbt_new0(s_pushState_t, 1);
860 ((pushState_t)(event->data))->type = type;
861 ((pushState_t)(event->data))->container = container;
862 ((pushState_t)(event->data))->value = value;
863 ((pushState_t)(event->data))->size = size;
865 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
867 insert_into_buffer (event);
871 void new_pajePopState (double timestamp, container_t container, type_t type)
873 paje_event_t event = xbt_new0(s_paje_event_t, 1);
874 event->event_type = PAJE_PopState;
875 event->timestamp = timestamp;
876 event->print = print_pajePopState;
877 event->free = free_paje_event;
878 event->data = xbt_new0(s_popState_t, 1);
879 ((popState_t)(event->data))->type = type;
880 ((popState_t)(event->data))->container = container;
882 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
884 insert_into_buffer (event);
888 void new_pajeResetState (double timestamp, container_t container, type_t type)
890 paje_event_t event = xbt_new0(s_paje_event_t, 1);
891 event->event_type = PAJE_ResetState;
892 event->timestamp = timestamp;
893 event->print = print_pajeResetState;
894 event->free = free_paje_event;
895 event->data = xbt_new0(s_resetState_t, 1);
896 ((resetState_t)(event->data))->type = type;
897 ((resetState_t)(event->data))->container = container;
899 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
901 insert_into_buffer (event);
904 void new_pajeStartLink (double timestamp, container_t container, type_t type, container_t sourceContainer, const char *value, const char *key)
906 paje_event_t event = xbt_new0(s_paje_event_t, 1);
907 event->event_type = PAJE_StartLink;
908 event->timestamp = timestamp;
909 event->print = print_pajeStartLink;
910 event->free = free_paje_event;
911 event->data = xbt_new0(s_startLink_t, 1);
912 ((startLink_t)(event->data))->type = type;
913 ((startLink_t)(event->data))->container = container;
914 ((startLink_t)(event->data))->sourceContainer = sourceContainer;
915 ((startLink_t)(event->data))->value = xbt_strdup(value);
916 ((startLink_t)(event->data))->key = xbt_strdup(key);
917 ((startLink_t)(event->data))->size = -1;
918 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
920 insert_into_buffer (event);
923 void new_pajeStartLinkWithSize (double timestamp, container_t container, type_t type, container_t sourceContainer, const char *value, const char *key, int size)
925 paje_event_t event = xbt_new0(s_paje_event_t, 1);
926 event->event_type = PAJE_StartLink;
927 event->timestamp = timestamp;
928 event->print = print_pajeStartLink;
929 event->free = free_paje_event;
930 event->data = xbt_new0(s_startLink_t, 1);
931 ((startLink_t)(event->data))->type = type;
932 ((startLink_t)(event->data))->container = container;
933 ((startLink_t)(event->data))->sourceContainer = sourceContainer;
934 ((startLink_t)(event->data))->value = xbt_strdup(value);
935 ((startLink_t)(event->data))->key = xbt_strdup(key);
936 ((startLink_t)(event->data))->size = size;
938 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
940 insert_into_buffer (event);
943 void new_pajeEndLink (double timestamp, container_t container, type_t type, container_t destContainer, const char *value, const char *key)
945 paje_event_t event = xbt_new0(s_paje_event_t, 1);
946 event->event_type = PAJE_EndLink;
947 event->timestamp = timestamp;
948 event->print = print_pajeEndLink;
949 event->free = free_paje_event;
950 event->data = xbt_new0(s_endLink_t, 1);
951 ((endLink_t)(event->data))->type = type;
952 ((endLink_t)(event->data))->container = container;
953 ((endLink_t)(event->data))->destContainer = destContainer;
954 ((endLink_t)(event->data))->value = xbt_strdup(value);
955 ((endLink_t)(event->data))->key = xbt_strdup(key);
957 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
959 insert_into_buffer (event);
962 void new_pajeNewEvent (double timestamp, container_t container, type_t type, val_t value)
964 paje_event_t event = xbt_new0(s_paje_event_t, 1);
965 event->event_type = PAJE_NewEvent;
966 event->timestamp = timestamp;
967 event->print = print_pajeNewEvent;
968 event->free = free_paje_event;
969 event->data = xbt_new0(s_newEvent_t, 1);
970 ((newEvent_t)(event->data))->type = type;
971 ((newEvent_t)(event->data))->container = container;
972 ((newEvent_t)(event->data))->value = value;
974 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
976 insert_into_buffer (event);
979 #endif /* HAVE_TRACING */