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");
13 typedef struct paje_event *paje_event_t;
14 typedef struct paje_event {
16 e_event_type event_type;
17 void (*print) (paje_event_t event);
18 void (*free) (paje_event_t event);
22 typedef struct s_defineContainerType *defineContainerType_t;
23 typedef struct s_defineContainerType {
25 }s_defineContainerType_t;
27 typedef struct s_defineVariableType *defineVariableType_t;
28 typedef struct s_defineVariableType {
30 }s_defineVariableType_t;
32 typedef struct s_defineStateType *defineStateType_t;
33 typedef struct s_defineStateType {
37 typedef struct s_defineEventType *defineEventType_t;
38 typedef struct s_defineEventType {
42 typedef struct s_defineLinkType *defineLinkType_t;
43 typedef struct s_defineLinkType {
49 typedef struct s_defineEntityValue *defineEntityValue_t;
50 typedef struct s_defineEntityValue {
52 }s_defineEntityValue_t;
54 typedef struct s_createContainer *createContainer_t;
55 typedef struct s_createContainer {
56 container_t container;
59 typedef struct s_destroyContainer *destroyContainer_t;
60 typedef struct s_destroyContainer {
61 container_t container;
62 }s_destroyContainer_t;
64 typedef struct s_setVariable *setVariable_t;
65 typedef struct s_setVariable {
66 container_t container;
71 typedef struct s_addVariable *addVariable_t;
72 typedef struct s_addVariable {
73 container_t container;
78 typedef struct s_subVariable *subVariable_t;
79 typedef struct s_subVariable {
80 container_t container;
85 typedef struct s_setState *setState_t;
86 typedef struct s_setState {
87 container_t container;
92 typedef struct s_pushState *pushState_t;
93 typedef struct s_pushState {
94 container_t container;
99 typedef struct s_popState *popState_t;
100 typedef struct s_popState {
101 container_t container;
105 typedef struct s_resetState *resetState_t;
106 typedef struct s_resetState {
107 container_t container;
111 typedef struct s_startLink *startLink_t;
112 typedef struct s_startLink {
113 container_t container;
115 container_t sourceContainer;
120 typedef struct s_endLink *endLink_t;
121 typedef struct s_endLink {
122 container_t container;
124 container_t destContainer;
129 typedef struct s_newEvent *newEvent_t;
130 typedef struct s_newEvent {
131 container_t container;
136 FILE *tracing_file = NULL;
138 static xbt_dynar_t buffer = NULL;
140 static void dump_comment (const char *comment)
142 if (!strlen(comment)) return;
143 fprintf (tracing_file, "# %s\n", comment);
146 static void dump_comment_file (const char *filename)
148 if (!strlen(filename)) return;
149 FILE *file = fopen (filename, "r");
151 THROWF (system_error, 1, "Comment file %s could not be opened for reading.", filename);
156 if (feof(file)) break;
157 fprintf (tracing_file, "# ");
159 fprintf (tracing_file, "%c", c);
161 if (feof(file)) break;
163 fprintf (tracing_file, "\n");
169 void TRACE_paje_start(void)
171 char *filename = TRACE_get_filename();
172 tracing_file = fopen(filename, "w");
173 if (tracing_file == NULL){
174 THROWF (system_error, 1, "Tracefile %s could not be opened for writing.", filename);
177 XBT_DEBUG("Filename %s is open for writing", filename);
179 /* output generator version */
180 fprintf (tracing_file, "#This file was generated using SimGrid-%d.%d.%d\n", SIMGRID_VERSION_MAJOR, SIMGRID_VERSION_MINOR, SIMGRID_VERSION_PATCH);
181 fprintf (tracing_file, "#[");
184 xbt_dynar_foreach (sg_cmdline, cpt, str){
185 fprintf(tracing_file, "%s ",str);
187 fprintf (tracing_file, "]\n");
189 /* output one line comment */
190 dump_comment (TRACE_get_comment());
192 /* output comment file */
193 dump_comment_file (TRACE_get_comment_file());
196 TRACE_header(TRACE_basic());
198 buffer = xbt_dynar_new (sizeof(paje_event_t), NULL);
201 void TRACE_paje_end(void)
203 fclose(tracing_file);
204 char *filename = TRACE_get_filename();
205 xbt_dynar_free (&buffer);
206 XBT_DEBUG("Filename %s is closed", filename);
209 double TRACE_last_timestamp_to_dump = 0;
210 //dumps the trace file until the timestamp TRACE_last_timestamp_to_dump
211 void TRACE_paje_dump_buffer (int force)
213 if (!TRACE_is_enabled()) return;
214 XBT_DEBUG("%s: dump until %f. starts", __FUNCTION__, TRACE_last_timestamp_to_dump);
218 xbt_dynar_foreach(buffer, i, event){
219 event->print (event);
222 xbt_dynar_free (&buffer);
223 buffer = xbt_dynar_new (sizeof(paje_event_t), NULL);
226 while (!xbt_dynar_is_empty(buffer)){
227 double head_timestamp = (*(paje_event_t*)xbt_dynar_get_ptr(buffer, 0))->timestamp;
228 if (head_timestamp > TRACE_last_timestamp_to_dump){
231 xbt_dynar_remove_at (buffer, 0, &event);
232 event->print (event);
236 XBT_DEBUG("%s: ends", __FUNCTION__);
239 /* internal do the instrumentation module */
240 static void insert_into_buffer (paje_event_t tbi)
242 if (TRACE_buffer() == 0){
247 XBT_DEBUG("%s: insert event_type=%d, timestamp=%f, buffersize=%lu)",
248 __FUNCTION__, (int)tbi->event_type, tbi->timestamp, xbt_dynar_length(buffer));
251 for (i = xbt_dynar_length(buffer); i > 0; i--) {
252 paje_event_t e1 = *(paje_event_t*)xbt_dynar_get_ptr(buffer, i - 1);
253 if (e1->timestamp <= tbi->timestamp)
256 xbt_dynar_insert_at(buffer, i, &tbi);
258 XBT_DEBUG("%s: inserted at beginning", __FUNCTION__);
260 XBT_DEBUG("%s: inserted at%s %u", __FUNCTION__,
261 (i == xbt_dynar_length(buffer) - 1 ? " end, pos =" : ""), i);
264 static void print_pajeDefineContainerType(paje_event_t event)
266 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
267 fprintf(tracing_file, "%d %s %s %s\n",
268 (int)event->event_type,
269 ((defineContainerType_t)event->data)->type->id,
270 ((defineContainerType_t)event->data)->type->father->id,
271 ((defineContainerType_t)event->data)->type->name);
274 static void print_pajeDefineVariableType(paje_event_t event)
276 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
277 fprintf(tracing_file, "%d %s %s %s \"%s\"\n",
278 (int)event->event_type,
279 ((defineVariableType_t)event->data)->type->id,
280 ((defineVariableType_t)event->data)->type->father->id,
281 ((defineVariableType_t)event->data)->type->name,
282 ((defineVariableType_t)event->data)->type->color);
285 static void print_pajeDefineStateType(paje_event_t event)
287 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
288 fprintf(tracing_file, "%d %s %s %s\n",
289 (int)event->event_type,
290 ((defineStateType_t)event->data)->type->id,
291 ((defineStateType_t)event->data)->type->father->id,
292 ((defineStateType_t)event->data)->type->name);
295 static void print_pajeDefineEventType(paje_event_t event)
297 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
298 fprintf(tracing_file, "%d %s %s %s\n",
299 (int)event->event_type,
300 ((defineEventType_t)event->data)->type->id,
301 ((defineEventType_t)event->data)->type->father->id,
302 ((defineEventType_t)event->data)->type->name);
305 static void print_pajeDefineLinkType(paje_event_t event)
307 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
308 fprintf(tracing_file, "%d %s %s %s %s %s\n",
309 (int)event->event_type,
310 ((defineLinkType_t)event->data)->type->id,
311 ((defineLinkType_t)event->data)->type->father->id,
312 ((defineLinkType_t)event->data)->source->id,
313 ((defineLinkType_t)event->data)->dest->id,
314 ((defineLinkType_t)event->data)->type->name);
317 static void print_pajeDefineEntityValue (paje_event_t event)
319 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
320 fprintf(tracing_file, "%d %s %s %s \"%s\"\n",
321 (int)event->event_type,
322 ((defineEntityValue_t)event->data)->value->id,
323 ((defineEntityValue_t)event->data)->value->father->id,
324 ((defineEntityValue_t)event->data)->value->name,
325 ((defineEntityValue_t)event->data)->value->color);
328 static void print_pajeCreateContainer(paje_event_t event)
330 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
331 if (event->timestamp == 0){
332 fprintf(tracing_file, "%d 0 %s %s %s \"%s\"\n",
333 (int)event->event_type,
334 ((createContainer_t)event->data)->container->id,
335 ((createContainer_t)event->data)->container->type->id,
336 ((createContainer_t)event->data)->container->father->id,
337 ((createContainer_t)event->data)->container->name);
339 fprintf(tracing_file, "%d %lf %s %s %s \"%s\"\n",
340 (int)event->event_type,
342 ((createContainer_t)event->data)->container->id,
343 ((createContainer_t)event->data)->container->type->id,
344 ((createContainer_t)event->data)->container->father->id,
345 ((createContainer_t)event->data)->container->name);
349 static void print_pajeDestroyContainer(paje_event_t event)
351 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
352 if (event->timestamp == 0){
353 fprintf(tracing_file, "%d 0 %s %s\n",
354 (int)event->event_type,
355 ((destroyContainer_t)event->data)->container->type->id,
356 ((destroyContainer_t)event->data)->container->id);
358 fprintf(tracing_file, "%d %lf %s %s\n",
359 (int)event->event_type,
361 ((destroyContainer_t)event->data)->container->type->id,
362 ((destroyContainer_t)event->data)->container->id);
366 static void print_pajeSetVariable(paje_event_t event)
368 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
369 if (event->timestamp == 0){
370 fprintf(tracing_file, "%d 0 %s %s %f\n",
371 (int)event->event_type,
372 ((setVariable_t)event->data)->type->id,
373 ((setVariable_t)event->data)->container->id,
374 ((setVariable_t)event->data)->value);
376 fprintf(tracing_file, "%d %lf %s %s %f\n",
377 (int)event->event_type,
379 ((setVariable_t)event->data)->type->id,
380 ((setVariable_t)event->data)->container->id,
381 ((setVariable_t)event->data)->value);
385 static void print_pajeAddVariable(paje_event_t event)
387 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
388 if (event->timestamp == 0){
389 fprintf(tracing_file, "%d 0 %s %s %f\n",
390 (int)event->event_type,
391 ((addVariable_t)event->data)->type->id,
392 ((addVariable_t)event->data)->container->id,
393 ((addVariable_t)event->data)->value);
395 fprintf(tracing_file, "%d %lf %s %s %f\n",
396 (int)event->event_type,
398 ((addVariable_t)event->data)->type->id,
399 ((addVariable_t)event->data)->container->id,
400 ((addVariable_t)event->data)->value);
404 static void print_pajeSubVariable(paje_event_t event)
406 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
407 if (event->timestamp == 0){
408 fprintf(tracing_file, "%d 0 %s %s %f\n",
409 (int)event->event_type,
410 ((subVariable_t)event->data)->type->id,
411 ((subVariable_t)event->data)->container->id,
412 ((subVariable_t)event->data)->value);
414 fprintf(tracing_file, "%d %lf %s %s %f\n",
415 (int)event->event_type,
417 ((subVariable_t)event->data)->type->id,
418 ((subVariable_t)event->data)->container->id,
419 ((subVariable_t)event->data)->value);
423 static void print_pajeSetState(paje_event_t event)
425 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
426 if (event->timestamp == 0){
427 fprintf(tracing_file, "%d 0 %s %s %s\n",
428 (int)event->event_type,
429 ((setState_t)event->data)->type->id,
430 ((setState_t)event->data)->container->id,
431 ((setState_t)event->data)->value->id);
433 fprintf(tracing_file, "%d %lf %s %s %s\n",
434 (int)event->event_type,
436 ((setState_t)event->data)->type->id,
437 ((setState_t)event->data)->container->id,
438 ((setState_t)event->data)->value->id);
442 static void print_pajePushState(paje_event_t event)
444 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
445 if (event->timestamp == 0){
446 fprintf(tracing_file, "%d 0 %s %s %s\n",
447 (int)event->event_type,
448 ((pushState_t)event->data)->type->id,
449 ((pushState_t)event->data)->container->id,
450 ((pushState_t)event->data)->value->id);
452 fprintf(tracing_file, "%d %lf %s %s %s\n",
453 (int)event->event_type,
455 ((pushState_t)event->data)->type->id,
456 ((pushState_t)event->data)->container->id,
457 ((pushState_t)event->data)->value->id);
461 static void print_pajePopState(paje_event_t event)
463 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
464 if (event->timestamp == 0){
465 fprintf(tracing_file, "%d 0 %s %s\n",
466 (int)event->event_type,
467 ((popState_t)event->data)->type->id,
468 ((popState_t)event->data)->container->id);
470 fprintf(tracing_file, "%d %lf %s %s\n",
471 (int)event->event_type,
473 ((popState_t)event->data)->type->id,
474 ((popState_t)event->data)->container->id);
478 static void print_pajeResetState(paje_event_t event)
480 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
481 if (event->timestamp == 0){
482 fprintf(tracing_file, "%d 0 %s %s\n",
483 (int)event->event_type,
484 ((resetState_t)event->data)->type->id,
485 ((resetState_t)event->data)->container->id);
487 fprintf(tracing_file, "%d %lf %s %s\n",
488 (int)event->event_type,
490 ((resetState_t)event->data)->type->id,
491 ((resetState_t)event->data)->container->id);
495 static void print_pajeStartLink(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 %s %s %s\n",
500 (int)event->event_type,
501 ((startLink_t)event->data)->type->id,
502 ((startLink_t)event->data)->container->id,
503 ((startLink_t)event->data)->value,
504 ((startLink_t)event->data)->sourceContainer->id,
505 ((startLink_t)event->data)->key);
507 fprintf(tracing_file, "%d %lf %s %s %s %s %s\n",
508 (int)event->event_type,
510 ((startLink_t)event->data)->type->id,
511 ((startLink_t)event->data)->container->id,
512 ((startLink_t)event->data)->value,
513 ((startLink_t)event->data)->sourceContainer->id,
514 ((startLink_t)event->data)->key);
518 static void print_pajeEndLink(paje_event_t event)
520 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
521 if (event->timestamp == 0){
522 fprintf(tracing_file, "%d 0 %s %s %s %s %s\n",
523 (int)event->event_type,
524 ((endLink_t)event->data)->type->id,
525 ((endLink_t)event->data)->container->id,
526 ((endLink_t)event->data)->value,
527 ((endLink_t)event->data)->destContainer->id,
528 ((endLink_t)event->data)->key);
530 fprintf(tracing_file, "%d %lf %s %s %s %s %s\n",
531 (int)event->event_type,
533 ((endLink_t)event->data)->type->id,
534 ((endLink_t)event->data)->container->id,
535 ((endLink_t)event->data)->value,
536 ((endLink_t)event->data)->destContainer->id,
537 ((endLink_t)event->data)->key);
541 static void print_pajeNewEvent (paje_event_t event)
543 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
544 if (event->timestamp == 0){
545 fprintf(tracing_file, "%d 0 %s %s %s\n",
546 (int)event->event_type,
547 ((newEvent_t)event->data)->type->id,
548 ((newEvent_t)event->data)->container->id,
549 ((newEvent_t)event->data)->value->id);
551 fprintf(tracing_file, "%d %lf %s %s %s\n",
552 (int)event->event_type,
554 ((newEvent_t)event->data)->type->id,
555 ((newEvent_t)event->data)->container->id,
556 ((newEvent_t)event->data)->value->id);
560 static void free_paje_event (paje_event_t event)
562 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
563 switch (event->event_type){
565 xbt_free (((startLink_t)(event->data))->value);
566 xbt_free (((startLink_t)(event->data))->key);
569 xbt_free (((endLink_t)(event->data))->value);
570 xbt_free (((endLink_t)(event->data))->key);
575 xbt_free (event->data);
579 void new_pajeDefineContainerType(type_t type)
581 paje_event_t event = xbt_new0(s_paje_event_t, 1);
582 event->event_type = PAJE_DefineContainerType;
583 event->timestamp = 0;
584 event->print = print_pajeDefineContainerType;
585 event->free = free_paje_event;
586 event->data = xbt_new0(s_defineContainerType_t, 1);
587 ((defineContainerType_t)(event->data))->type = type;
589 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
592 event->print (event);
596 void new_pajeDefineVariableType(type_t type)
598 paje_event_t event = xbt_new0(s_paje_event_t, 1);
599 event->event_type = PAJE_DefineVariableType;
600 event->timestamp = 0;
601 event->print = print_pajeDefineVariableType;
602 event->free = free_paje_event;
603 event->data = xbt_new0(s_defineVariableType_t, 1);
604 ((defineVariableType_t)(event->data))->type = type;
606 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
609 event->print (event);
613 void new_pajeDefineStateType(type_t type)
615 paje_event_t event = xbt_new0(s_paje_event_t, 1);
616 event->event_type = PAJE_DefineStateType;
617 event->timestamp = 0;
618 event->print = print_pajeDefineStateType;
619 event->free = free_paje_event;
620 event->data = xbt_new0(s_defineStateType_t, 1);
621 ((defineStateType_t)(event->data))->type = type;
623 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
626 event->print (event);
630 void new_pajeDefineEventType(type_t type)
632 paje_event_t event = xbt_new0(s_paje_event_t, 1);
633 event->event_type = PAJE_DefineEventType;
634 event->timestamp = 0;
635 event->print = print_pajeDefineEventType;
636 event->free = free_paje_event;
637 event->data = xbt_new0(s_defineEventType_t, 1);
638 ((defineEventType_t)(event->data))->type = type;
640 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
643 event->print (event);
647 void new_pajeDefineLinkType(type_t type, type_t source, type_t dest)
649 paje_event_t event = xbt_new0(s_paje_event_t, 1);
650 event->event_type = PAJE_DefineLinkType;
651 event->timestamp = 0;
652 event->print = print_pajeDefineLinkType;
653 event->free = free_paje_event;
654 event->data = xbt_new0(s_defineLinkType_t, 1);
655 ((defineLinkType_t)(event->data))->type = type;
656 ((defineLinkType_t)(event->data))->source = source;
657 ((defineLinkType_t)(event->data))->dest = dest;
659 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
662 event->print (event);
666 void new_pajeDefineEntityValue (val_t value)
668 paje_event_t event = xbt_new0(s_paje_event_t, 1);
669 event->event_type = PAJE_DefineEntityValue;
670 event->timestamp = 0;
671 event->print = print_pajeDefineEntityValue;
672 event->free = free_paje_event;
673 event->data = xbt_new0(s_defineEntityValue_t, 1);
674 ((defineEntityValue_t)(event->data))->value = value;
676 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
679 event->print (event);
683 void new_pajeCreateContainer (container_t container)
685 paje_event_t event = xbt_new0(s_paje_event_t, 1);
686 event->event_type = PAJE_CreateContainer;
687 event->timestamp = SIMIX_get_clock();
688 event->print = print_pajeCreateContainer;
689 event->free = free_paje_event;
690 event->data = xbt_new0(s_createContainer_t, 1);
691 ((createContainer_t)(event->data))->container = container;
693 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
696 event->print (event);
700 void new_pajeDestroyContainer (container_t container)
702 paje_event_t event = xbt_new0(s_paje_event_t, 1);
703 event->event_type = PAJE_DestroyContainer;
704 event->timestamp = SIMIX_get_clock();
705 event->print = print_pajeDestroyContainer;
706 event->free = free_paje_event;
707 event->data = xbt_new0(s_destroyContainer_t, 1);
708 ((destroyContainer_t)(event->data))->container = container;
710 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
713 event->print (event);
717 void new_pajeSetVariable (double timestamp, container_t container, type_t type, double value)
719 paje_event_t event = xbt_new0(s_paje_event_t, 1);
720 event->event_type = PAJE_SetVariable;
721 event->timestamp = timestamp;
722 event->print = print_pajeSetVariable;
723 event->free = free_paje_event;
724 event->data = xbt_new0(s_setVariable_t, 1);
725 ((setVariable_t)(event->data))->type = type;
726 ((setVariable_t)(event->data))->container = container;
727 ((setVariable_t)(event->data))->value = value;
729 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
731 insert_into_buffer (event);
735 void new_pajeAddVariable (double timestamp, container_t container, type_t type, double value)
737 paje_event_t event = xbt_new0(s_paje_event_t, 1);
738 event->event_type = PAJE_AddVariable;
739 event->timestamp = timestamp;
740 event->print = print_pajeAddVariable;
741 event->free = free_paje_event;
742 event->data = xbt_new0(s_addVariable_t, 1);
743 ((addVariable_t)(event->data))->type = type;
744 ((addVariable_t)(event->data))->container = container;
745 ((addVariable_t)(event->data))->value = value;
747 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
749 insert_into_buffer (event);
752 void new_pajeSubVariable (double timestamp, container_t container, type_t type, double value)
754 paje_event_t event = xbt_new0(s_paje_event_t, 1);
755 event->event_type = PAJE_SubVariable;
756 event->timestamp = timestamp;
757 event->print = print_pajeSubVariable;
758 event->free = free_paje_event;
759 event->data = xbt_new0(s_subVariable_t, 1);
760 ((subVariable_t)(event->data))->type = type;
761 ((subVariable_t)(event->data))->container = container;
762 ((subVariable_t)(event->data))->value = value;
764 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
766 insert_into_buffer (event);
769 void new_pajeSetState (double timestamp, container_t container, type_t type, val_t value)
771 paje_event_t event = xbt_new0(s_paje_event_t, 1);
772 event->event_type = PAJE_SetState;
773 event->timestamp = timestamp;
774 event->print = print_pajeSetState;
775 event->free = free_paje_event;
776 event->data = xbt_new0(s_setState_t, 1);
777 ((setState_t)(event->data))->type = type;
778 ((setState_t)(event->data))->container = container;
779 ((setState_t)(event->data))->value = value;
781 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
783 insert_into_buffer (event);
787 void new_pajePushState (double timestamp, container_t container, type_t type, val_t value)
789 paje_event_t event = xbt_new0(s_paje_event_t, 1);
790 event->event_type = PAJE_PushState;
791 event->timestamp = timestamp;
792 event->print = print_pajePushState;
793 event->free = free_paje_event;
794 event->data = xbt_new0(s_pushState_t, 1);
795 ((pushState_t)(event->data))->type = type;
796 ((pushState_t)(event->data))->container = container;
797 ((pushState_t)(event->data))->value = value;
799 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
801 insert_into_buffer (event);
805 void new_pajePopState (double timestamp, container_t container, type_t type)
807 paje_event_t event = xbt_new0(s_paje_event_t, 1);
808 event->event_type = PAJE_PopState;
809 event->timestamp = timestamp;
810 event->print = print_pajePopState;
811 event->free = free_paje_event;
812 event->data = xbt_new0(s_popState_t, 1);
813 ((popState_t)(event->data))->type = type;
814 ((popState_t)(event->data))->container = container;
816 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
818 insert_into_buffer (event);
822 void new_pajeResetState (double timestamp, container_t container, type_t type)
824 paje_event_t event = xbt_new0(s_paje_event_t, 1);
825 event->event_type = PAJE_ResetState;
826 event->timestamp = timestamp;
827 event->print = print_pajeResetState;
828 event->free = free_paje_event;
829 event->data = xbt_new0(s_resetState_t, 1);
830 ((resetState_t)(event->data))->type = type;
831 ((resetState_t)(event->data))->container = container;
833 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
835 insert_into_buffer (event);
838 void new_pajeStartLink (double timestamp, container_t container, type_t type, container_t sourceContainer, const char *value, const char *key)
840 paje_event_t event = xbt_new0(s_paje_event_t, 1);
841 event->event_type = PAJE_StartLink;
842 event->timestamp = timestamp;
843 event->print = print_pajeStartLink;
844 event->free = free_paje_event;
845 event->data = xbt_new0(s_startLink_t, 1);
846 ((startLink_t)(event->data))->type = type;
847 ((startLink_t)(event->data))->container = container;
848 ((startLink_t)(event->data))->sourceContainer = sourceContainer;
849 ((startLink_t)(event->data))->value = xbt_strdup(value);
850 ((startLink_t)(event->data))->key = xbt_strdup(key);
852 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
854 insert_into_buffer (event);
857 void new_pajeEndLink (double timestamp, container_t container, type_t type, container_t destContainer, const char *value, const char *key)
859 paje_event_t event = xbt_new0(s_paje_event_t, 1);
860 event->event_type = PAJE_EndLink;
861 event->timestamp = timestamp;
862 event->print = print_pajeEndLink;
863 event->free = free_paje_event;
864 event->data = xbt_new0(s_endLink_t, 1);
865 ((endLink_t)(event->data))->type = type;
866 ((endLink_t)(event->data))->container = container;
867 ((endLink_t)(event->data))->destContainer = destContainer;
868 ((endLink_t)(event->data))->value = xbt_strdup(value);
869 ((endLink_t)(event->data))->key = xbt_strdup(key);
871 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
873 insert_into_buffer (event);
876 void new_pajeNewEvent (double timestamp, container_t container, type_t type, val_t value)
878 paje_event_t event = xbt_new0(s_paje_event_t, 1);
879 event->event_type = PAJE_NewEvent;
880 event->timestamp = timestamp;
881 event->print = print_pajeNewEvent;
882 event->free = free_paje_event;
883 event->data = xbt_new0(s_newEvent_t, 1);
884 ((newEvent_t)(event->data))->type = type;
885 ((newEvent_t)(event->data))->container = container;
886 ((newEvent_t)(event->data))->value = value;
888 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
890 insert_into_buffer (event);
893 #endif /* HAVE_TRACING */