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);
182 /* output one line comment */
183 dump_comment (TRACE_get_comment());
185 /* output comment file */
186 dump_comment_file (TRACE_get_comment_file());
189 TRACE_header(TRACE_basic());
191 buffer = xbt_dynar_new (sizeof(paje_event_t), NULL);
194 void TRACE_paje_end(void)
196 fclose(tracing_file);
197 char *filename = TRACE_get_filename();
198 xbt_dynar_free (&buffer);
199 XBT_DEBUG("Filename %s is closed", filename);
202 double TRACE_last_timestamp_to_dump = 0;
203 //dumps the trace file until the timestamp TRACE_last_timestamp_to_dump
204 void TRACE_paje_dump_buffer (int force)
206 if (!TRACE_is_enabled()) return;
207 XBT_DEBUG("%s: dump until %f. starts", __FUNCTION__, TRACE_last_timestamp_to_dump);
211 xbt_dynar_foreach(buffer, i, event){
212 event->print (event);
215 xbt_dynar_free (&buffer);
216 buffer = xbt_dynar_new (sizeof(paje_event_t), NULL);
219 while (!xbt_dynar_is_empty(buffer)){
220 double head_timestamp = (*(paje_event_t*)xbt_dynar_get_ptr(buffer, 0))->timestamp;
221 if (head_timestamp > TRACE_last_timestamp_to_dump){
224 xbt_dynar_remove_at (buffer, 0, &event);
225 event->print (event);
229 XBT_DEBUG("%s: ends", __FUNCTION__);
232 /* internal do the instrumentation module */
233 static void insert_into_buffer (paje_event_t tbi)
235 if (TRACE_buffer() == 0){
240 XBT_DEBUG("%s: insert event_type=%d, timestamp=%f, buffersize=%lu)",
241 __FUNCTION__, (int)tbi->event_type, tbi->timestamp, xbt_dynar_length(buffer));
244 for (i = xbt_dynar_length(buffer); i > 0; i--) {
245 paje_event_t e1 = *(paje_event_t*)xbt_dynar_get_ptr(buffer, i - 1);
246 if (e1->timestamp <= tbi->timestamp)
249 xbt_dynar_insert_at(buffer, i, &tbi);
251 XBT_DEBUG("%s: inserted at beginning", __FUNCTION__);
253 XBT_DEBUG("%s: inserted at%s %u", __FUNCTION__,
254 (i == xbt_dynar_length(buffer) - 1 ? " end, pos =" : ""), i);
257 static void print_pajeDefineContainerType(paje_event_t event)
259 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
260 fprintf(tracing_file, "%d %s %s %s\n",
261 (int)event->event_type,
262 ((defineContainerType_t)event->data)->type->id,
263 ((defineContainerType_t)event->data)->type->father->id,
264 ((defineContainerType_t)event->data)->type->name);
267 static void print_pajeDefineVariableType(paje_event_t event)
269 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
270 fprintf(tracing_file, "%d %s %s %s \"%s\"\n",
271 (int)event->event_type,
272 ((defineVariableType_t)event->data)->type->id,
273 ((defineVariableType_t)event->data)->type->father->id,
274 ((defineVariableType_t)event->data)->type->name,
275 ((defineVariableType_t)event->data)->type->color);
278 static void print_pajeDefineStateType(paje_event_t event)
280 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
281 fprintf(tracing_file, "%d %s %s %s\n",
282 (int)event->event_type,
283 ((defineStateType_t)event->data)->type->id,
284 ((defineStateType_t)event->data)->type->father->id,
285 ((defineStateType_t)event->data)->type->name);
288 static void print_pajeDefineEventType(paje_event_t event)
290 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
291 fprintf(tracing_file, "%d %s %s %s\n",
292 (int)event->event_type,
293 ((defineEventType_t)event->data)->type->id,
294 ((defineEventType_t)event->data)->type->father->id,
295 ((defineEventType_t)event->data)->type->name);
298 static void print_pajeDefineLinkType(paje_event_t event)
300 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
301 fprintf(tracing_file, "%d %s %s %s %s %s\n",
302 (int)event->event_type,
303 ((defineLinkType_t)event->data)->type->id,
304 ((defineLinkType_t)event->data)->type->father->id,
305 ((defineLinkType_t)event->data)->source->id,
306 ((defineLinkType_t)event->data)->dest->id,
307 ((defineLinkType_t)event->data)->type->name);
310 static void print_pajeDefineEntityValue (paje_event_t event)
312 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
313 fprintf(tracing_file, "%d %s %s %s \"%s\"\n",
314 (int)event->event_type,
315 ((defineEntityValue_t)event->data)->value->id,
316 ((defineEntityValue_t)event->data)->value->father->id,
317 ((defineEntityValue_t)event->data)->value->name,
318 ((defineEntityValue_t)event->data)->value->color);
321 static void print_pajeCreateContainer(paje_event_t event)
323 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
324 if (event->timestamp == 0){
325 fprintf(tracing_file, "%d 0 %s %s %s \"%s\"\n",
326 (int)event->event_type,
327 ((createContainer_t)event->data)->container->id,
328 ((createContainer_t)event->data)->container->type->id,
329 ((createContainer_t)event->data)->container->father->id,
330 ((createContainer_t)event->data)->container->name);
332 fprintf(tracing_file, "%d %lf %s %s %s \"%s\"\n",
333 (int)event->event_type,
335 ((createContainer_t)event->data)->container->id,
336 ((createContainer_t)event->data)->container->type->id,
337 ((createContainer_t)event->data)->container->father->id,
338 ((createContainer_t)event->data)->container->name);
342 static void print_pajeDestroyContainer(paje_event_t event)
344 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
345 if (event->timestamp == 0){
346 fprintf(tracing_file, "%d 0 %s %s\n",
347 (int)event->event_type,
348 ((destroyContainer_t)event->data)->container->type->id,
349 ((destroyContainer_t)event->data)->container->id);
351 fprintf(tracing_file, "%d %lf %s %s\n",
352 (int)event->event_type,
354 ((destroyContainer_t)event->data)->container->type->id,
355 ((destroyContainer_t)event->data)->container->id);
359 static void print_pajeSetVariable(paje_event_t event)
361 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
362 if (event->timestamp == 0){
363 fprintf(tracing_file, "%d 0 %s %s %f\n",
364 (int)event->event_type,
365 ((setVariable_t)event->data)->type->id,
366 ((setVariable_t)event->data)->container->id,
367 ((setVariable_t)event->data)->value);
369 fprintf(tracing_file, "%d %lf %s %s %f\n",
370 (int)event->event_type,
372 ((setVariable_t)event->data)->type->id,
373 ((setVariable_t)event->data)->container->id,
374 ((setVariable_t)event->data)->value);
378 static void print_pajeAddVariable(paje_event_t event)
380 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
381 if (event->timestamp == 0){
382 fprintf(tracing_file, "%d 0 %s %s %f\n",
383 (int)event->event_type,
384 ((addVariable_t)event->data)->type->id,
385 ((addVariable_t)event->data)->container->id,
386 ((addVariable_t)event->data)->value);
388 fprintf(tracing_file, "%d %lf %s %s %f\n",
389 (int)event->event_type,
391 ((addVariable_t)event->data)->type->id,
392 ((addVariable_t)event->data)->container->id,
393 ((addVariable_t)event->data)->value);
397 static void print_pajeSubVariable(paje_event_t event)
399 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
400 if (event->timestamp == 0){
401 fprintf(tracing_file, "%d 0 %s %s %f\n",
402 (int)event->event_type,
403 ((subVariable_t)event->data)->type->id,
404 ((subVariable_t)event->data)->container->id,
405 ((subVariable_t)event->data)->value);
407 fprintf(tracing_file, "%d %lf %s %s %f\n",
408 (int)event->event_type,
410 ((subVariable_t)event->data)->type->id,
411 ((subVariable_t)event->data)->container->id,
412 ((subVariable_t)event->data)->value);
416 static void print_pajeSetState(paje_event_t event)
418 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
419 if (event->timestamp == 0){
420 fprintf(tracing_file, "%d 0 %s %s %s\n",
421 (int)event->event_type,
422 ((setState_t)event->data)->type->id,
423 ((setState_t)event->data)->container->id,
424 ((setState_t)event->data)->value->id);
426 fprintf(tracing_file, "%d %lf %s %s %s\n",
427 (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);
435 static void print_pajePushState(paje_event_t event)
437 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
438 if (event->timestamp == 0){
439 fprintf(tracing_file, "%d 0 %s %s %s\n",
440 (int)event->event_type,
441 ((pushState_t)event->data)->type->id,
442 ((pushState_t)event->data)->container->id,
443 ((pushState_t)event->data)->value->id);
445 fprintf(tracing_file, "%d %lf %s %s %s\n",
446 (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);
454 static void print_pajePopState(paje_event_t event)
456 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
457 if (event->timestamp == 0){
458 fprintf(tracing_file, "%d 0 %s %s\n",
459 (int)event->event_type,
460 ((popState_t)event->data)->type->id,
461 ((popState_t)event->data)->container->id);
463 fprintf(tracing_file, "%d %lf %s %s\n",
464 (int)event->event_type,
466 ((popState_t)event->data)->type->id,
467 ((popState_t)event->data)->container->id);
471 static void print_pajeResetState(paje_event_t event)
473 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
474 if (event->timestamp == 0){
475 fprintf(tracing_file, "%d 0 %s %s\n",
476 (int)event->event_type,
477 ((resetState_t)event->data)->type->id,
478 ((resetState_t)event->data)->container->id);
480 fprintf(tracing_file, "%d %lf %s %s\n",
481 (int)event->event_type,
483 ((resetState_t)event->data)->type->id,
484 ((resetState_t)event->data)->container->id);
488 static void print_pajeStartLink(paje_event_t event)
490 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
491 if (event->timestamp == 0){
492 fprintf(tracing_file, "%d 0 %s %s %s %s %s\n",
493 (int)event->event_type,
494 ((startLink_t)event->data)->type->id,
495 ((startLink_t)event->data)->container->id,
496 ((startLink_t)event->data)->value,
497 ((startLink_t)event->data)->sourceContainer->id,
498 ((startLink_t)event->data)->key);
500 fprintf(tracing_file, "%d %lf %s %s %s %s %s\n",
501 (int)event->event_type,
503 ((startLink_t)event->data)->type->id,
504 ((startLink_t)event->data)->container->id,
505 ((startLink_t)event->data)->value,
506 ((startLink_t)event->data)->sourceContainer->id,
507 ((startLink_t)event->data)->key);
511 static void print_pajeEndLink(paje_event_t event)
513 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
514 if (event->timestamp == 0){
515 fprintf(tracing_file, "%d 0 %s %s %s %s %s\n",
516 (int)event->event_type,
517 ((endLink_t)event->data)->type->id,
518 ((endLink_t)event->data)->container->id,
519 ((endLink_t)event->data)->value,
520 ((endLink_t)event->data)->destContainer->id,
521 ((endLink_t)event->data)->key);
523 fprintf(tracing_file, "%d %lf %s %s %s %s %s\n",
524 (int)event->event_type,
526 ((endLink_t)event->data)->type->id,
527 ((endLink_t)event->data)->container->id,
528 ((endLink_t)event->data)->value,
529 ((endLink_t)event->data)->destContainer->id,
530 ((endLink_t)event->data)->key);
534 static void print_pajeNewEvent (paje_event_t event)
536 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
537 if (event->timestamp == 0){
538 fprintf(tracing_file, "%d 0 %s %s %s\n",
539 (int)event->event_type,
540 ((newEvent_t)event->data)->type->id,
541 ((newEvent_t)event->data)->container->id,
542 ((newEvent_t)event->data)->value->id);
544 fprintf(tracing_file, "%d %lf %s %s %s\n",
545 (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);
553 static void free_paje_event (paje_event_t event)
555 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
556 switch (event->event_type){
558 xbt_free (((startLink_t)(event->data))->value);
559 xbt_free (((startLink_t)(event->data))->key);
562 xbt_free (((endLink_t)(event->data))->value);
563 xbt_free (((endLink_t)(event->data))->key);
568 xbt_free (event->data);
572 void new_pajeDefineContainerType(type_t type)
574 paje_event_t event = xbt_new0(s_paje_event_t, 1);
575 event->event_type = PAJE_DefineContainerType;
576 event->timestamp = 0;
577 event->print = print_pajeDefineContainerType;
578 event->free = free_paje_event;
579 event->data = xbt_new0(s_defineContainerType_t, 1);
580 ((defineContainerType_t)(event->data))->type = type;
582 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
585 event->print (event);
589 void new_pajeDefineVariableType(type_t type)
591 paje_event_t event = xbt_new0(s_paje_event_t, 1);
592 event->event_type = PAJE_DefineVariableType;
593 event->timestamp = 0;
594 event->print = print_pajeDefineVariableType;
595 event->free = free_paje_event;
596 event->data = xbt_new0(s_defineVariableType_t, 1);
597 ((defineVariableType_t)(event->data))->type = type;
599 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
602 event->print (event);
606 void new_pajeDefineStateType(type_t type)
608 paje_event_t event = xbt_new0(s_paje_event_t, 1);
609 event->event_type = PAJE_DefineStateType;
610 event->timestamp = 0;
611 event->print = print_pajeDefineStateType;
612 event->free = free_paje_event;
613 event->data = xbt_new0(s_defineStateType_t, 1);
614 ((defineStateType_t)(event->data))->type = type;
616 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
619 event->print (event);
623 void new_pajeDefineEventType(type_t type)
625 paje_event_t event = xbt_new0(s_paje_event_t, 1);
626 event->event_type = PAJE_DefineEventType;
627 event->timestamp = 0;
628 event->print = print_pajeDefineEventType;
629 event->free = free_paje_event;
630 event->data = xbt_new0(s_defineEventType_t, 1);
631 ((defineEventType_t)(event->data))->type = type;
633 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
636 event->print (event);
640 void new_pajeDefineLinkType(type_t type, type_t source, type_t dest)
642 paje_event_t event = xbt_new0(s_paje_event_t, 1);
643 event->event_type = PAJE_DefineLinkType;
644 event->timestamp = 0;
645 event->print = print_pajeDefineLinkType;
646 event->free = free_paje_event;
647 event->data = xbt_new0(s_defineLinkType_t, 1);
648 ((defineLinkType_t)(event->data))->type = type;
649 ((defineLinkType_t)(event->data))->source = source;
650 ((defineLinkType_t)(event->data))->dest = dest;
652 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
655 event->print (event);
659 void new_pajeDefineEntityValue (val_t value)
661 paje_event_t event = xbt_new0(s_paje_event_t, 1);
662 event->event_type = PAJE_DefineEntityValue;
663 event->timestamp = 0;
664 event->print = print_pajeDefineEntityValue;
665 event->free = free_paje_event;
666 event->data = xbt_new0(s_defineEntityValue_t, 1);
667 ((defineEntityValue_t)(event->data))->value = value;
669 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
672 event->print (event);
676 void new_pajeCreateContainer (container_t container)
678 paje_event_t event = xbt_new0(s_paje_event_t, 1);
679 event->event_type = PAJE_CreateContainer;
680 event->timestamp = SIMIX_get_clock();
681 event->print = print_pajeCreateContainer;
682 event->free = free_paje_event;
683 event->data = xbt_new0(s_createContainer_t, 1);
684 ((createContainer_t)(event->data))->container = container;
686 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
689 event->print (event);
693 void new_pajeDestroyContainer (container_t container)
695 paje_event_t event = xbt_new0(s_paje_event_t, 1);
696 event->event_type = PAJE_DestroyContainer;
697 event->timestamp = SIMIX_get_clock();
698 event->print = print_pajeDestroyContainer;
699 event->free = free_paje_event;
700 event->data = xbt_new0(s_destroyContainer_t, 1);
701 ((destroyContainer_t)(event->data))->container = container;
703 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
706 event->print (event);
710 void new_pajeSetVariable (double timestamp, container_t container, type_t type, double value)
712 paje_event_t event = xbt_new0(s_paje_event_t, 1);
713 event->event_type = PAJE_SetVariable;
714 event->timestamp = timestamp;
715 event->print = print_pajeSetVariable;
716 event->free = free_paje_event;
717 event->data = xbt_new0(s_setVariable_t, 1);
718 ((setVariable_t)(event->data))->type = type;
719 ((setVariable_t)(event->data))->container = container;
720 ((setVariable_t)(event->data))->value = value;
722 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
724 insert_into_buffer (event);
728 void new_pajeAddVariable (double timestamp, container_t container, type_t type, double value)
730 paje_event_t event = xbt_new0(s_paje_event_t, 1);
731 event->event_type = PAJE_AddVariable;
732 event->timestamp = timestamp;
733 event->print = print_pajeAddVariable;
734 event->free = free_paje_event;
735 event->data = xbt_new0(s_addVariable_t, 1);
736 ((addVariable_t)(event->data))->type = type;
737 ((addVariable_t)(event->data))->container = container;
738 ((addVariable_t)(event->data))->value = value;
740 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
742 insert_into_buffer (event);
745 void new_pajeSubVariable (double timestamp, container_t container, type_t type, double value)
747 paje_event_t event = xbt_new0(s_paje_event_t, 1);
748 event->event_type = PAJE_SubVariable;
749 event->timestamp = timestamp;
750 event->print = print_pajeSubVariable;
751 event->free = free_paje_event;
752 event->data = xbt_new0(s_subVariable_t, 1);
753 ((subVariable_t)(event->data))->type = type;
754 ((subVariable_t)(event->data))->container = container;
755 ((subVariable_t)(event->data))->value = value;
757 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
759 insert_into_buffer (event);
762 void new_pajeSetState (double timestamp, container_t container, type_t type, val_t value)
764 paje_event_t event = xbt_new0(s_paje_event_t, 1);
765 event->event_type = PAJE_SetState;
766 event->timestamp = timestamp;
767 event->print = print_pajeSetState;
768 event->free = free_paje_event;
769 event->data = xbt_new0(s_setState_t, 1);
770 ((setState_t)(event->data))->type = type;
771 ((setState_t)(event->data))->container = container;
772 ((setState_t)(event->data))->value = value;
774 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
776 insert_into_buffer (event);
780 void new_pajePushState (double timestamp, container_t container, type_t type, val_t value)
782 paje_event_t event = xbt_new0(s_paje_event_t, 1);
783 event->event_type = PAJE_PushState;
784 event->timestamp = timestamp;
785 event->print = print_pajePushState;
786 event->free = free_paje_event;
787 event->data = xbt_new0(s_pushState_t, 1);
788 ((pushState_t)(event->data))->type = type;
789 ((pushState_t)(event->data))->container = container;
790 ((pushState_t)(event->data))->value = value;
792 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
794 insert_into_buffer (event);
798 void new_pajePopState (double timestamp, container_t container, type_t type)
800 paje_event_t event = xbt_new0(s_paje_event_t, 1);
801 event->event_type = PAJE_PopState;
802 event->timestamp = timestamp;
803 event->print = print_pajePopState;
804 event->free = free_paje_event;
805 event->data = xbt_new0(s_popState_t, 1);
806 ((popState_t)(event->data))->type = type;
807 ((popState_t)(event->data))->container = container;
809 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
811 insert_into_buffer (event);
815 void new_pajeResetState (double timestamp, container_t container, type_t type)
817 paje_event_t event = xbt_new0(s_paje_event_t, 1);
818 event->event_type = PAJE_ResetState;
819 event->timestamp = timestamp;
820 event->print = print_pajeResetState;
821 event->free = free_paje_event;
822 event->data = xbt_new0(s_resetState_t, 1);
823 ((resetState_t)(event->data))->type = type;
824 ((resetState_t)(event->data))->container = container;
826 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
828 insert_into_buffer (event);
831 void new_pajeStartLink (double timestamp, container_t container, type_t type, container_t sourceContainer, const char *value, const char *key)
833 paje_event_t event = xbt_new0(s_paje_event_t, 1);
834 event->event_type = PAJE_StartLink;
835 event->timestamp = timestamp;
836 event->print = print_pajeStartLink;
837 event->free = free_paje_event;
838 event->data = xbt_new0(s_startLink_t, 1);
839 ((startLink_t)(event->data))->type = type;
840 ((startLink_t)(event->data))->container = container;
841 ((startLink_t)(event->data))->sourceContainer = sourceContainer;
842 ((startLink_t)(event->data))->value = xbt_strdup(value);
843 ((startLink_t)(event->data))->key = xbt_strdup(key);
845 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
847 insert_into_buffer (event);
850 void new_pajeEndLink (double timestamp, container_t container, type_t type, container_t destContainer, const char *value, const char *key)
852 paje_event_t event = xbt_new0(s_paje_event_t, 1);
853 event->event_type = PAJE_EndLink;
854 event->timestamp = timestamp;
855 event->print = print_pajeEndLink;
856 event->free = free_paje_event;
857 event->data = xbt_new0(s_endLink_t, 1);
858 ((endLink_t)(event->data))->type = type;
859 ((endLink_t)(event->data))->container = container;
860 ((endLink_t)(event->data))->destContainer = destContainer;
861 ((endLink_t)(event->data))->value = xbt_strdup(value);
862 ((endLink_t)(event->data))->key = xbt_strdup(key);
864 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
866 insert_into_buffer (event);
869 void new_pajeNewEvent (double timestamp, container_t container, type_t type, val_t value)
871 paje_event_t event = xbt_new0(s_paje_event_t, 1);
872 event->event_type = PAJE_NewEvent;
873 event->timestamp = timestamp;
874 event->print = print_pajeNewEvent;
875 event->free = free_paje_event;
876 event->data = xbt_new0(s_newEvent_t, 1);
877 ((newEvent_t)(event->data))->type = type;
878 ((newEvent_t)(event->data))->container = container;
879 ((newEvent_t)(event->data))->value = value;
881 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
883 insert_into_buffer (event);
886 #endif /* HAVE_TRACING */