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;
102 typedef struct s_popState *popState_t;
103 typedef struct s_popState {
104 container_t container;
108 typedef struct s_resetState *resetState_t;
109 typedef struct s_resetState {
110 container_t container;
114 typedef struct s_startLink *startLink_t;
115 typedef struct s_startLink {
116 container_t container;
118 container_t sourceContainer;
124 typedef struct s_endLink *endLink_t;
125 typedef struct s_endLink {
126 container_t container;
128 container_t destContainer;
133 typedef struct s_newEvent *newEvent_t;
134 typedef struct s_newEvent {
135 container_t container;
140 FILE *tracing_file = NULL;
142 static xbt_dynar_t buffer = NULL;
144 static void dump_comment (const char *comment)
146 if (!strlen(comment)) return;
147 fprintf (tracing_file, "# %s\n", comment);
150 static void dump_comment_file (const char *filename)
152 if (!strlen(filename)) return;
153 FILE *file = fopen (filename, "r");
155 THROWF (system_error, 1, "Comment file %s could not be opened for reading.", filename);
160 if (feof(file)) break;
161 fprintf (tracing_file, "# ");
163 fprintf (tracing_file, "%c", c);
165 if (feof(file)) break;
167 fprintf (tracing_file, "\n");
173 void TRACE_paje_start(void)
175 char *filename = TRACE_get_filename();
176 tracing_file = fopen(filename, "w");
177 if (tracing_file == NULL){
178 THROWF (system_error, 1, "Tracefile %s could not be opened for writing.", filename);
181 XBT_DEBUG("Filename %s is open for writing", filename);
183 /* output generator version */
184 fprintf (tracing_file, "#This file was generated using SimGrid-%d.%d.%d\n", SIMGRID_VERSION_MAJOR, SIMGRID_VERSION_MINOR, SIMGRID_VERSION_PATCH);
185 fprintf (tracing_file, "#[");
188 xbt_dynar_foreach (xbt_cmdline, cpt, str){
189 fprintf(tracing_file, "%s ",str);
191 fprintf (tracing_file, "]\n");
193 /* output one line comment */
194 dump_comment (TRACE_get_comment());
196 /* output comment file */
197 dump_comment_file (TRACE_get_comment_file());
200 TRACE_header(TRACE_basic(),TRACE_display_sizes());
202 buffer = xbt_dynar_new (sizeof(paje_event_t), NULL);
205 void TRACE_paje_end(void)
207 fclose(tracing_file);
208 char *filename = TRACE_get_filename();
209 xbt_dynar_free (&buffer);
210 XBT_DEBUG("Filename %s is closed", filename);
213 double TRACE_last_timestamp_to_dump = 0;
214 //dumps the trace file until the timestamp TRACE_last_timestamp_to_dump
215 void TRACE_paje_dump_buffer (int force)
217 if (!TRACE_is_enabled()) return;
218 XBT_DEBUG("%s: dump until %f. starts", __FUNCTION__, TRACE_last_timestamp_to_dump);
222 xbt_dynar_foreach(buffer, i, event){
223 event->print (event);
226 xbt_dynar_free (&buffer);
227 buffer = xbt_dynar_new (sizeof(paje_event_t), NULL);
231 xbt_dynar_foreach(buffer, cursor, event) {
232 double head_timestamp = event->timestamp;
233 if (head_timestamp > TRACE_last_timestamp_to_dump){
236 event->print (event);
239 xbt_dynar_remove_n_at(buffer, cursor, 0);
241 XBT_DEBUG("%s: ends", __FUNCTION__);
244 /* internal do the instrumentation module */
245 static void insert_into_buffer (paje_event_t tbi)
247 if (TRACE_buffer() == 0){
252 XBT_DEBUG("%s: insert event_type=%d, timestamp=%f, buffersize=%lu)",
253 __FUNCTION__, (int)tbi->event_type, tbi->timestamp, xbt_dynar_length(buffer));
256 for (i = xbt_dynar_length(buffer); i > 0; i--) {
257 paje_event_t e1 = *(paje_event_t*)xbt_dynar_get_ptr(buffer, i - 1);
258 if (e1->timestamp <= tbi->timestamp)
261 xbt_dynar_insert_at(buffer, i, &tbi);
263 XBT_DEBUG("%s: inserted at beginning", __FUNCTION__);
265 XBT_DEBUG("%s: inserted at%s %u", __FUNCTION__,
266 (i == xbt_dynar_length(buffer) - 1 ? " end, pos =" : ""), i);
269 static void print_pajeDefineContainerType(paje_event_t event)
271 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
272 fprintf(tracing_file, "%d %s %s %s\n",
273 (int)event->event_type,
274 ((defineContainerType_t)event->data)->type->id,
275 ((defineContainerType_t)event->data)->type->father->id,
276 ((defineContainerType_t)event->data)->type->name);
279 static void print_pajeDefineVariableType(paje_event_t event)
281 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
282 fprintf(tracing_file, "%d %s %s %s \"%s\"\n",
283 (int)event->event_type,
284 ((defineVariableType_t)event->data)->type->id,
285 ((defineVariableType_t)event->data)->type->father->id,
286 ((defineVariableType_t)event->data)->type->name,
287 ((defineVariableType_t)event->data)->type->color);
290 static void print_pajeDefineStateType(paje_event_t event)
292 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
293 fprintf(tracing_file, "%d %s %s %s\n",
294 (int)event->event_type,
295 ((defineStateType_t)event->data)->type->id,
296 ((defineStateType_t)event->data)->type->father->id,
297 ((defineStateType_t)event->data)->type->name);
300 static void print_pajeDefineEventType(paje_event_t event)
302 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
303 fprintf(tracing_file, "%d %s %s %s\n",
304 (int)event->event_type,
305 ((defineEventType_t)event->data)->type->id,
306 ((defineEventType_t)event->data)->type->father->id,
307 ((defineEventType_t)event->data)->type->name);
310 static void print_pajeDefineLinkType(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 %s\n",
314 (int)event->event_type,
315 ((defineLinkType_t)event->data)->type->id,
316 ((defineLinkType_t)event->data)->type->father->id,
317 ((defineLinkType_t)event->data)->source->id,
318 ((defineLinkType_t)event->data)->dest->id,
319 ((defineLinkType_t)event->data)->type->name);
322 static void print_pajeDefineEntityValue (paje_event_t event)
324 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
325 fprintf(tracing_file, "%d %s %s %s \"%s\"\n",
326 (int)event->event_type,
327 ((defineEntityValue_t)event->data)->value->id,
328 ((defineEntityValue_t)event->data)->value->father->id,
329 ((defineEntityValue_t)event->data)->value->name,
330 ((defineEntityValue_t)event->data)->value->color);
333 static void print_pajeCreateContainer(paje_event_t event)
335 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
336 if (event->timestamp == 0){
337 fprintf(tracing_file, "%d 0 %s %s %s \"%s\"\n",
338 (int)event->event_type,
339 ((createContainer_t)event->data)->container->id,
340 ((createContainer_t)event->data)->container->type->id,
341 ((createContainer_t)event->data)->container->father->id,
342 ((createContainer_t)event->data)->container->name);
344 fprintf(tracing_file, "%d %f %s %s %s \"%s\"\n",
345 (int)event->event_type,
347 ((createContainer_t)event->data)->container->id,
348 ((createContainer_t)event->data)->container->type->id,
349 ((createContainer_t)event->data)->container->father->id,
350 ((createContainer_t)event->data)->container->name);
354 static void print_pajeDestroyContainer(paje_event_t event)
356 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
357 if (event->timestamp == 0){
358 fprintf(tracing_file, "%d 0 %s %s\n",
359 (int)event->event_type,
360 ((destroyContainer_t)event->data)->container->type->id,
361 ((destroyContainer_t)event->data)->container->id);
363 fprintf(tracing_file, "%d %f %s %s\n",
364 (int)event->event_type,
366 ((destroyContainer_t)event->data)->container->type->id,
367 ((destroyContainer_t)event->data)->container->id);
371 static void print_pajeSetVariable(paje_event_t event)
373 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
374 if (event->timestamp == 0){
375 fprintf(tracing_file, "%d 0 %s %s %f\n",
376 (int)event->event_type,
377 ((setVariable_t)event->data)->type->id,
378 ((setVariable_t)event->data)->container->id,
379 ((setVariable_t)event->data)->value);
381 fprintf(tracing_file, "%d %f %s %s %f\n",
382 (int)event->event_type,
384 ((setVariable_t)event->data)->type->id,
385 ((setVariable_t)event->data)->container->id,
386 ((setVariable_t)event->data)->value);
390 static void print_pajeAddVariable(paje_event_t event)
392 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
393 if (event->timestamp == 0){
394 fprintf(tracing_file, "%d 0 %s %s %f\n",
395 (int)event->event_type,
396 ((addVariable_t)event->data)->type->id,
397 ((addVariable_t)event->data)->container->id,
398 ((addVariable_t)event->data)->value);
400 fprintf(tracing_file, "%d %f %s %s %f\n",
401 (int)event->event_type,
403 ((addVariable_t)event->data)->type->id,
404 ((addVariable_t)event->data)->container->id,
405 ((addVariable_t)event->data)->value);
409 static void print_pajeSubVariable(paje_event_t event)
411 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
412 if (event->timestamp == 0){
413 fprintf(tracing_file, "%d 0 %s %s %f\n",
414 (int)event->event_type,
415 ((subVariable_t)event->data)->type->id,
416 ((subVariable_t)event->data)->container->id,
417 ((subVariable_t)event->data)->value);
419 fprintf(tracing_file, "%d %f %s %s %f\n",
420 (int)event->event_type,
422 ((subVariable_t)event->data)->type->id,
423 ((subVariable_t)event->data)->container->id,
424 ((subVariable_t)event->data)->value);
428 static void print_pajeSetState(paje_event_t event)
430 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
431 if (event->timestamp == 0){
432 fprintf(tracing_file, "%d 0 %s %s %s\n",
433 (int)event->event_type,
434 ((setState_t)event->data)->type->id,
435 ((setState_t)event->data)->container->id,
436 ((setState_t)event->data)->value->id);
438 fprintf(tracing_file, "%d %f %s %s %s\n",
439 (int)event->event_type,
441 ((setState_t)event->data)->type->id,
442 ((setState_t)event->data)->container->id,
443 ((setState_t)event->data)->value->id);
447 static void print_pajePushState(paje_event_t event)
449 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
450 if (!TRACE_display_sizes()){
451 if (event->timestamp == 0){
452 fprintf(tracing_file, "%d 0 %s %s %s\n",
453 (int)event->event_type,
454 ((pushState_t)event->data)->type->id,
455 ((pushState_t)event->data)->container->id,
456 ((pushState_t)event->data)->value->id);
458 fprintf(tracing_file, "%d %f %s %s %s\n",
459 (int)event->event_type,
461 ((pushState_t)event->data)->type->id,
462 ((pushState_t)event->data)->container->id,
463 ((pushState_t)event->data)->value->id);
466 if (event->timestamp == 0){
467 fprintf(tracing_file, "%d 0 %s %s %s ",
468 (int)event->event_type,
469 ((pushState_t)event->data)->type->id,
470 ((pushState_t)event->data)->container->id,
471 ((pushState_t)event->data)->value->id);
474 unsigned int iter = 0;
475 xbt_dynar_foreach( ((pushState_t)event->data)->extra, iter, value) {
476 fprintf(tracing_file, "%s ", value);
478 fprintf(tracing_file, "\n");
481 fprintf(tracing_file, "%d %f %s %s %s ",
482 (int)event->event_type,
484 ((pushState_t)event->data)->type->id,
485 ((pushState_t)event->data)->container->id,
486 ((pushState_t)event->data)->value->id);
489 unsigned int iter = 0;
490 xbt_dynar_foreach( ((pushState_t)event->data)->extra, iter, value) {
491 fprintf(tracing_file, "%s ", value);
493 fprintf(tracing_file, "\n");
495 xbt_dynar_free(&((pushState_t)event->data)->extra);
499 static void print_pajePopState(paje_event_t event)
501 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
502 if (event->timestamp == 0){
503 fprintf(tracing_file, "%d 0 %s %s\n",
504 (int)event->event_type,
505 ((popState_t)event->data)->type->id,
506 ((popState_t)event->data)->container->id);
508 fprintf(tracing_file, "%d %f %s %s\n",
509 (int)event->event_type,
511 ((popState_t)event->data)->type->id,
512 ((popState_t)event->data)->container->id);
516 static void print_pajeResetState(paje_event_t event)
518 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
519 if (event->timestamp == 0){
520 fprintf(tracing_file, "%d 0 %s %s\n",
521 (int)event->event_type,
522 ((resetState_t)event->data)->type->id,
523 ((resetState_t)event->data)->container->id);
525 fprintf(tracing_file, "%d %f %s %s\n",
526 (int)event->event_type,
528 ((resetState_t)event->data)->type->id,
529 ((resetState_t)event->data)->container->id);
533 static void print_pajeStartLink(paje_event_t event)
535 if (!TRACE_display_sizes()){
536 if (event->timestamp == 0){
537 fprintf(tracing_file, "%d 0 %s %s %s %s %s\n",
538 (int)event->event_type,
539 ((startLink_t)event->data)->type->id,
540 ((startLink_t)event->data)->container->id,
541 ((startLink_t)event->data)->value,
542 ((startLink_t)event->data)->sourceContainer->id,
543 ((startLink_t)event->data)->key);
545 fprintf(tracing_file, "%d %f %s %s %s %s %s\n",
546 (int)event->event_type,
548 ((startLink_t)event->data)->type->id,
549 ((startLink_t)event->data)->container->id,
550 ((startLink_t)event->data)->value,
551 ((startLink_t)event->data)->sourceContainer->id,
552 ((startLink_t)event->data)->key);
555 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
556 if (event->timestamp == 0){
557 fprintf(tracing_file, "%d 0 %s %s %s %s %s %d\n",
558 (int)event->event_type,
559 ((startLink_t)event->data)->type->id,
560 ((startLink_t)event->data)->container->id,
561 ((startLink_t)event->data)->value,
562 ((startLink_t)event->data)->sourceContainer->id,
563 ((startLink_t)event->data)->key,
564 ((startLink_t)event->data)->size);
566 fprintf(tracing_file, "%d %f %s %s %s %s %s %d\n",
567 (int)event->event_type,
569 ((startLink_t)event->data)->type->id,
570 ((startLink_t)event->data)->container->id,
571 ((startLink_t)event->data)->value,
572 ((startLink_t)event->data)->sourceContainer->id,
573 ((startLink_t)event->data)->key,
574 ((startLink_t)event->data)->size);
579 static void print_pajeEndLink(paje_event_t event)
581 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
582 if (event->timestamp == 0){
583 fprintf(tracing_file, "%d 0 %s %s %s %s %s\n",
584 (int)event->event_type,
585 ((endLink_t)event->data)->type->id,
586 ((endLink_t)event->data)->container->id,
587 ((endLink_t)event->data)->value,
588 ((endLink_t)event->data)->destContainer->id,
589 ((endLink_t)event->data)->key);
591 fprintf(tracing_file, "%d %f %s %s %s %s %s\n",
592 (int)event->event_type,
594 ((endLink_t)event->data)->type->id,
595 ((endLink_t)event->data)->container->id,
596 ((endLink_t)event->data)->value,
597 ((endLink_t)event->data)->destContainer->id,
598 ((endLink_t)event->data)->key);
602 static void print_pajeNewEvent (paje_event_t event)
604 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
605 if (event->timestamp == 0){
606 fprintf(tracing_file, "%d 0 %s %s %s\n",
607 (int)event->event_type,
608 ((newEvent_t)event->data)->type->id,
609 ((newEvent_t)event->data)->container->id,
610 ((newEvent_t)event->data)->value->id);
612 fprintf(tracing_file, "%d %f %s %s %s\n",
613 (int)event->event_type,
615 ((newEvent_t)event->data)->type->id,
616 ((newEvent_t)event->data)->container->id,
617 ((newEvent_t)event->data)->value->id);
621 static void free_paje_event (paje_event_t event)
623 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
624 switch (event->event_type){
626 xbt_free (((startLink_t)(event->data))->value);
627 xbt_free (((startLink_t)(event->data))->key);
630 xbt_free (((endLink_t)(event->data))->value);
631 xbt_free (((endLink_t)(event->data))->key);
636 xbt_free (event->data);
640 void new_pajeDefineContainerType(type_t type)
642 paje_event_t event = xbt_new0(s_paje_event_t, 1);
643 event->event_type = PAJE_DefineContainerType;
644 event->timestamp = 0;
645 event->print = print_pajeDefineContainerType;
646 event->free = free_paje_event;
647 event->data = xbt_new0(s_defineContainerType_t, 1);
648 ((defineContainerType_t)(event->data))->type = type;
650 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
653 event->print (event);
657 void new_pajeDefineVariableType(type_t type)
659 paje_event_t event = xbt_new0(s_paje_event_t, 1);
660 event->event_type = PAJE_DefineVariableType;
661 event->timestamp = 0;
662 event->print = print_pajeDefineVariableType;
663 event->free = free_paje_event;
664 event->data = xbt_new0(s_defineVariableType_t, 1);
665 ((defineVariableType_t)(event->data))->type = type;
667 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
670 event->print (event);
674 void new_pajeDefineStateType(type_t type)
676 paje_event_t event = xbt_new0(s_paje_event_t, 1);
677 event->event_type = PAJE_DefineStateType;
678 event->timestamp = 0;
679 event->print = print_pajeDefineStateType;
680 event->free = free_paje_event;
681 event->data = xbt_new0(s_defineStateType_t, 1);
682 ((defineStateType_t)(event->data))->type = type;
684 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
687 event->print (event);
691 void new_pajeDefineEventType(type_t type)
693 paje_event_t event = xbt_new0(s_paje_event_t, 1);
694 event->event_type = PAJE_DefineEventType;
695 event->timestamp = 0;
696 event->print = print_pajeDefineEventType;
697 event->free = free_paje_event;
698 event->data = xbt_new0(s_defineEventType_t, 1);
699 ((defineEventType_t)(event->data))->type = type;
701 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
704 event->print (event);
708 void new_pajeDefineLinkType(type_t type, type_t source, type_t dest)
710 paje_event_t event = xbt_new0(s_paje_event_t, 1);
711 event->event_type = PAJE_DefineLinkType;
712 event->timestamp = 0;
713 event->print = print_pajeDefineLinkType;
714 event->free = free_paje_event;
715 event->data = xbt_new0(s_defineLinkType_t, 1);
716 ((defineLinkType_t)(event->data))->type = type;
717 ((defineLinkType_t)(event->data))->source = source;
718 ((defineLinkType_t)(event->data))->dest = dest;
720 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
723 event->print (event);
727 void new_pajeDefineEntityValue (val_t value)
729 paje_event_t event = xbt_new0(s_paje_event_t, 1);
730 event->event_type = PAJE_DefineEntityValue;
731 event->timestamp = 0;
732 event->print = print_pajeDefineEntityValue;
733 event->free = free_paje_event;
734 event->data = xbt_new0(s_defineEntityValue_t, 1);
735 ((defineEntityValue_t)(event->data))->value = value;
737 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
740 event->print (event);
744 void new_pajeCreateContainer (container_t container)
746 paje_event_t event = xbt_new0(s_paje_event_t, 1);
747 event->event_type = PAJE_CreateContainer;
748 event->timestamp = SIMIX_get_clock();
749 event->print = print_pajeCreateContainer;
750 event->free = free_paje_event;
751 event->data = xbt_new0(s_createContainer_t, 1);
752 ((createContainer_t)(event->data))->container = container;
754 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
757 event->print (event);
761 void new_pajeDestroyContainer (container_t container)
763 paje_event_t event = xbt_new0(s_paje_event_t, 1);
764 event->event_type = PAJE_DestroyContainer;
765 event->timestamp = SIMIX_get_clock();
766 event->print = print_pajeDestroyContainer;
767 event->free = free_paje_event;
768 event->data = xbt_new0(s_destroyContainer_t, 1);
769 ((destroyContainer_t)(event->data))->container = container;
771 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
774 event->print (event);
778 void new_pajeSetVariable (double timestamp, container_t container, type_t type, double value)
780 paje_event_t event = xbt_new0(s_paje_event_t, 1);
781 event->event_type = PAJE_SetVariable;
782 event->timestamp = timestamp;
783 event->print = print_pajeSetVariable;
784 event->free = free_paje_event;
785 event->data = xbt_new0(s_setVariable_t, 1);
786 ((setVariable_t)(event->data))->type = type;
787 ((setVariable_t)(event->data))->container = container;
788 ((setVariable_t)(event->data))->value = value;
790 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
792 insert_into_buffer (event);
796 void new_pajeAddVariable (double timestamp, container_t container, type_t type, double value)
798 paje_event_t event = xbt_new0(s_paje_event_t, 1);
799 event->event_type = PAJE_AddVariable;
800 event->timestamp = timestamp;
801 event->print = print_pajeAddVariable;
802 event->free = free_paje_event;
803 event->data = xbt_new0(s_addVariable_t, 1);
804 ((addVariable_t)(event->data))->type = type;
805 ((addVariable_t)(event->data))->container = container;
806 ((addVariable_t)(event->data))->value = value;
808 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
810 insert_into_buffer (event);
813 void new_pajeSubVariable (double timestamp, container_t container, type_t type, double value)
815 paje_event_t event = xbt_new0(s_paje_event_t, 1);
816 event->event_type = PAJE_SubVariable;
817 event->timestamp = timestamp;
818 event->print = print_pajeSubVariable;
819 event->free = free_paje_event;
820 event->data = xbt_new0(s_subVariable_t, 1);
821 ((subVariable_t)(event->data))->type = type;
822 ((subVariable_t)(event->data))->container = container;
823 ((subVariable_t)(event->data))->value = value;
825 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
827 insert_into_buffer (event);
830 void new_pajeSetState (double timestamp, container_t container, type_t type, val_t value)
832 paje_event_t event = xbt_new0(s_paje_event_t, 1);
833 event->event_type = PAJE_SetState;
834 event->timestamp = timestamp;
835 event->print = print_pajeSetState;
836 event->free = free_paje_event;
837 event->data = xbt_new0(s_setState_t, 1);
838 ((setState_t)(event->data))->type = type;
839 ((setState_t)(event->data))->container = container;
840 ((setState_t)(event->data))->value = value;
842 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
844 insert_into_buffer (event);
848 void new_pajePushStateWithExtra (double timestamp, container_t container, type_t type, val_t value, xbt_dynar_t extra)
850 paje_event_t event = xbt_new0(s_paje_event_t, 1);
851 event->event_type = PAJE_PushState;
852 event->timestamp = timestamp;
853 event->print = print_pajePushState;
854 event->free = free_paje_event;
855 event->data = xbt_new0(s_pushState_t, 1);
856 ((pushState_t)(event->data))->type = type;
857 ((pushState_t)(event->data))->container = container;
858 ((pushState_t)(event->data))->value = value;
859 ((pushState_t)(event->data))->extra = extra;
861 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
863 insert_into_buffer (event);
867 void new_pajePushState (double timestamp, container_t container, type_t type, val_t value)
869 paje_event_t event = xbt_new0(s_paje_event_t, 1);
870 event->event_type = PAJE_PushState;
871 event->timestamp = timestamp;
872 event->print = print_pajePushState;
873 event->free = free_paje_event;
874 event->data = xbt_new0(s_pushState_t, 1);
875 ((pushState_t)(event->data))->type = type;
876 ((pushState_t)(event->data))->container = container;
877 ((pushState_t)(event->data))->value = value;
878 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
880 insert_into_buffer (event);
884 void new_pajePopState (double timestamp, container_t container, type_t type)
886 paje_event_t event = xbt_new0(s_paje_event_t, 1);
887 event->event_type = PAJE_PopState;
888 event->timestamp = timestamp;
889 event->print = print_pajePopState;
890 event->free = free_paje_event;
891 event->data = xbt_new0(s_popState_t, 1);
892 ((popState_t)(event->data))->type = type;
893 ((popState_t)(event->data))->container = container;
895 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
897 insert_into_buffer (event);
901 void new_pajeResetState (double timestamp, container_t container, type_t type)
903 paje_event_t event = xbt_new0(s_paje_event_t, 1);
904 event->event_type = PAJE_ResetState;
905 event->timestamp = timestamp;
906 event->print = print_pajeResetState;
907 event->free = free_paje_event;
908 event->data = xbt_new0(s_resetState_t, 1);
909 ((resetState_t)(event->data))->type = type;
910 ((resetState_t)(event->data))->container = container;
912 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
914 insert_into_buffer (event);
917 void new_pajeStartLink (double timestamp, container_t container, type_t type, container_t sourceContainer, const char *value, const char *key)
919 paje_event_t event = xbt_new0(s_paje_event_t, 1);
920 event->event_type = PAJE_StartLink;
921 event->timestamp = timestamp;
922 event->print = print_pajeStartLink;
923 event->free = free_paje_event;
924 event->data = xbt_new0(s_startLink_t, 1);
925 ((startLink_t)(event->data))->type = type;
926 ((startLink_t)(event->data))->container = container;
927 ((startLink_t)(event->data))->sourceContainer = sourceContainer;
928 ((startLink_t)(event->data))->value = xbt_strdup(value);
929 ((startLink_t)(event->data))->key = xbt_strdup(key);
930 ((startLink_t)(event->data))->size = -1;
931 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
933 insert_into_buffer (event);
936 void new_pajeStartLinkWithSize (double timestamp, container_t container, type_t type, container_t sourceContainer, const char *value, const char *key, int size)
938 paje_event_t event = xbt_new0(s_paje_event_t, 1);
939 event->event_type = PAJE_StartLink;
940 event->timestamp = timestamp;
941 event->print = print_pajeStartLink;
942 event->free = free_paje_event;
943 event->data = xbt_new0(s_startLink_t, 1);
944 ((startLink_t)(event->data))->type = type;
945 ((startLink_t)(event->data))->container = container;
946 ((startLink_t)(event->data))->sourceContainer = sourceContainer;
947 ((startLink_t)(event->data))->value = xbt_strdup(value);
948 ((startLink_t)(event->data))->key = xbt_strdup(key);
949 ((startLink_t)(event->data))->size = size;
951 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
953 insert_into_buffer (event);
956 void new_pajeEndLink (double timestamp, container_t container, type_t type, container_t destContainer, const char *value, const char *key)
958 paje_event_t event = xbt_new0(s_paje_event_t, 1);
959 event->event_type = PAJE_EndLink;
960 event->timestamp = timestamp;
961 event->print = print_pajeEndLink;
962 event->free = free_paje_event;
963 event->data = xbt_new0(s_endLink_t, 1);
964 ((endLink_t)(event->data))->type = type;
965 ((endLink_t)(event->data))->container = container;
966 ((endLink_t)(event->data))->destContainer = destContainer;
967 ((endLink_t)(event->data))->value = xbt_strdup(value);
968 ((endLink_t)(event->data))->key = xbt_strdup(key);
970 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
972 insert_into_buffer (event);
975 void new_pajeNewEvent (double timestamp, container_t container, type_t type, val_t value)
977 paje_event_t event = xbt_new0(s_paje_event_t, 1);
978 event->event_type = PAJE_NewEvent;
979 event->timestamp = timestamp;
980 event->print = print_pajeNewEvent;
981 event->free = free_paje_event;
982 event->data = xbt_new0(s_newEvent_t, 1);
983 ((newEvent_t)(event->data))->type = type;
984 ((newEvent_t)(event->data))->container = container;
985 ((newEvent_t)(event->data))->value = value;
987 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
989 insert_into_buffer (event);
992 #endif /* HAVE_TRACING */