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 void TRACE_paje_start(void)
142 char *filename = TRACE_get_filename();
143 tracing_file = fopen(filename, "w");
144 if (tracing_file == NULL){
145 THROWF (system_error, 1, "Tracefile %s could not be opened for writing.", filename);
148 XBT_DEBUG("Filename %s is open for writing", filename);
151 TRACE_header(TRACE_basic());
153 buffer = xbt_dynar_new (sizeof(paje_event_t), NULL);
156 void TRACE_paje_end(void)
158 fclose(tracing_file);
159 char *filename = TRACE_get_filename();
160 xbt_dynar_free (&buffer);
161 XBT_DEBUG("Filename %s is closed", filename);
164 double TRACE_last_timestamp_to_dump = 0;
165 //dumps the trace file until the timestamp TRACE_last_timestamp_to_dump
166 void TRACE_paje_dump_buffer (int force)
168 if (!TRACE_is_enabled()) return;
169 XBT_DEBUG("%s: dump until %f. starts", __FUNCTION__, TRACE_last_timestamp_to_dump);
173 xbt_dynar_foreach(buffer, i, event){
174 event->print (event);
177 xbt_dynar_free (&buffer);
178 buffer = xbt_dynar_new (sizeof(paje_event_t), NULL);
181 while (!xbt_dynar_is_empty(buffer)){
182 double head_timestamp = (*(paje_event_t*)xbt_dynar_get_ptr(buffer, 0))->timestamp;
183 if (head_timestamp > TRACE_last_timestamp_to_dump){
186 xbt_dynar_remove_at (buffer, 0, &event);
187 event->print (event);
191 XBT_DEBUG("%s: ends", __FUNCTION__);
194 /* internal do the instrumentation module */
195 static void insert_into_buffer (paje_event_t tbi)
197 if (TRACE_buffer() == 0){
202 XBT_DEBUG("%s: insert event_type=%d, timestamp=%f, buffersize=%lu)",
203 __FUNCTION__, (int)tbi->event_type, tbi->timestamp, xbt_dynar_length(buffer));
206 for (i = xbt_dynar_length(buffer); i > 0; i--) {
207 paje_event_t e1 = *(paje_event_t*)xbt_dynar_get_ptr(buffer, i - 1);
208 if (e1->timestamp <= tbi->timestamp)
211 xbt_dynar_insert_at(buffer, i, &tbi);
213 XBT_DEBUG("%s: inserted at beginning", __FUNCTION__);
215 XBT_DEBUG("%s: inserted at%s %u", __FUNCTION__,
216 (i == xbt_dynar_length(buffer) - 1 ? " end, pos =" : ""), i);
219 static void print_pajeDefineContainerType(paje_event_t event)
221 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
222 fprintf(tracing_file, "%d %s %s %s\n",
223 (int)event->event_type,
224 ((defineContainerType_t)event->data)->type->id,
225 ((defineContainerType_t)event->data)->type->father->id,
226 ((defineContainerType_t)event->data)->type->name);
229 static void print_pajeDefineVariableType(paje_event_t event)
231 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
232 fprintf(tracing_file, "%d %s %s %s \"%s\"\n",
233 (int)event->event_type,
234 ((defineVariableType_t)event->data)->type->id,
235 ((defineVariableType_t)event->data)->type->father->id,
236 ((defineVariableType_t)event->data)->type->name,
237 ((defineVariableType_t)event->data)->type->color);
240 static void print_pajeDefineStateType(paje_event_t event)
242 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
243 fprintf(tracing_file, "%d %s %s %s\n",
244 (int)event->event_type,
245 ((defineStateType_t)event->data)->type->id,
246 ((defineStateType_t)event->data)->type->father->id,
247 ((defineStateType_t)event->data)->type->name);
250 static void print_pajeDefineEventType(paje_event_t event)
252 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
253 fprintf(tracing_file, "%d %s %s %s\n",
254 (int)event->event_type,
255 ((defineEventType_t)event->data)->type->id,
256 ((defineEventType_t)event->data)->type->father->id,
257 ((defineEventType_t)event->data)->type->name);
260 static void print_pajeDefineLinkType(paje_event_t event)
262 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
263 fprintf(tracing_file, "%d %s %s %s %s %s\n",
264 (int)event->event_type,
265 ((defineLinkType_t)event->data)->type->id,
266 ((defineLinkType_t)event->data)->type->father->id,
267 ((defineLinkType_t)event->data)->source->id,
268 ((defineLinkType_t)event->data)->dest->id,
269 ((defineLinkType_t)event->data)->type->name);
272 static void print_pajeDefineEntityValue (paje_event_t event)
274 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
275 fprintf(tracing_file, "%d %s %s %s \"%s\"\n",
276 (int)event->event_type,
277 ((defineEntityValue_t)event->data)->value->id,
278 ((defineEntityValue_t)event->data)->value->father->id,
279 ((defineEntityValue_t)event->data)->value->name,
280 ((defineEntityValue_t)event->data)->value->color);
283 static void print_pajeCreateContainer(paje_event_t event)
285 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
286 if (event->timestamp == 0){
287 fprintf(tracing_file, "%d 0 %s %s %s \"%s\"\n",
288 (int)event->event_type,
289 ((createContainer_t)event->data)->container->id,
290 ((createContainer_t)event->data)->container->type->id,
291 ((createContainer_t)event->data)->container->father->id,
292 ((createContainer_t)event->data)->container->name);
294 fprintf(tracing_file, "%d %lf %s %s %s \"%s\"\n",
295 (int)event->event_type,
297 ((createContainer_t)event->data)->container->id,
298 ((createContainer_t)event->data)->container->type->id,
299 ((createContainer_t)event->data)->container->father->id,
300 ((createContainer_t)event->data)->container->name);
304 static void print_pajeDestroyContainer(paje_event_t event)
306 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
307 if (event->timestamp == 0){
308 fprintf(tracing_file, "%d 0 %s %s\n",
309 (int)event->event_type,
310 ((destroyContainer_t)event->data)->container->type->id,
311 ((destroyContainer_t)event->data)->container->id);
313 fprintf(tracing_file, "%d %lf %s %s\n",
314 (int)event->event_type,
316 ((destroyContainer_t)event->data)->container->type->id,
317 ((destroyContainer_t)event->data)->container->id);
321 static void print_pajeSetVariable(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 %f\n",
326 (int)event->event_type,
327 ((setVariable_t)event->data)->type->id,
328 ((setVariable_t)event->data)->container->id,
329 ((setVariable_t)event->data)->value);
331 fprintf(tracing_file, "%d %lf %s %s %f\n",
332 (int)event->event_type,
334 ((setVariable_t)event->data)->type->id,
335 ((setVariable_t)event->data)->container->id,
336 ((setVariable_t)event->data)->value);
340 static void print_pajeAddVariable(paje_event_t event)
342 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
343 if (event->timestamp == 0){
344 fprintf(tracing_file, "%d 0 %s %s %f\n",
345 (int)event->event_type,
346 ((addVariable_t)event->data)->type->id,
347 ((addVariable_t)event->data)->container->id,
348 ((addVariable_t)event->data)->value);
350 fprintf(tracing_file, "%d %lf %s %s %f\n",
351 (int)event->event_type,
353 ((addVariable_t)event->data)->type->id,
354 ((addVariable_t)event->data)->container->id,
355 ((addVariable_t)event->data)->value);
359 static void print_pajeSubVariable(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 ((subVariable_t)event->data)->type->id,
366 ((subVariable_t)event->data)->container->id,
367 ((subVariable_t)event->data)->value);
369 fprintf(tracing_file, "%d %lf %s %s %f\n",
370 (int)event->event_type,
372 ((subVariable_t)event->data)->type->id,
373 ((subVariable_t)event->data)->container->id,
374 ((subVariable_t)event->data)->value);
378 static void print_pajeSetState(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 %s\n",
383 (int)event->event_type,
384 ((setState_t)event->data)->type->id,
385 ((setState_t)event->data)->container->id,
386 ((setState_t)event->data)->value->id);
388 fprintf(tracing_file, "%d %lf %s %s %s\n",
389 (int)event->event_type,
391 ((setState_t)event->data)->type->id,
392 ((setState_t)event->data)->container->id,
393 ((setState_t)event->data)->value->id);
397 static void print_pajePushState(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 %s\n",
402 (int)event->event_type,
403 ((pushState_t)event->data)->type->id,
404 ((pushState_t)event->data)->container->id,
405 ((pushState_t)event->data)->value->id);
407 fprintf(tracing_file, "%d %lf %s %s %s\n",
408 (int)event->event_type,
410 ((pushState_t)event->data)->type->id,
411 ((pushState_t)event->data)->container->id,
412 ((pushState_t)event->data)->value->id);
416 static void print_pajePopState(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\n",
421 (int)event->event_type,
422 ((popState_t)event->data)->type->id,
423 ((popState_t)event->data)->container->id);
425 fprintf(tracing_file, "%d %lf %s %s\n",
426 (int)event->event_type,
428 ((popState_t)event->data)->type->id,
429 ((popState_t)event->data)->container->id);
433 static void print_pajeResetState(paje_event_t event)
435 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
436 if (event->timestamp == 0){
437 fprintf(tracing_file, "%d 0 %s %s\n",
438 (int)event->event_type,
439 ((resetState_t)event->data)->type->id,
440 ((resetState_t)event->data)->container->id);
442 fprintf(tracing_file, "%d %lf %s %s\n",
443 (int)event->event_type,
445 ((resetState_t)event->data)->type->id,
446 ((resetState_t)event->data)->container->id);
450 static void print_pajeStartLink(paje_event_t event)
452 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
453 if (event->timestamp == 0){
454 fprintf(tracing_file, "%d 0 %s %s %s %s %s\n",
455 (int)event->event_type,
456 ((startLink_t)event->data)->type->id,
457 ((startLink_t)event->data)->container->id,
458 ((startLink_t)event->data)->value,
459 ((startLink_t)event->data)->sourceContainer->id,
460 ((startLink_t)event->data)->key);
462 fprintf(tracing_file, "%d %lf %s %s %s %s %s\n",
463 (int)event->event_type,
465 ((startLink_t)event->data)->type->id,
466 ((startLink_t)event->data)->container->id,
467 ((startLink_t)event->data)->value,
468 ((startLink_t)event->data)->sourceContainer->id,
469 ((startLink_t)event->data)->key);
473 static void print_pajeEndLink(paje_event_t event)
475 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
476 if (event->timestamp == 0){
477 fprintf(tracing_file, "%d 0 %s %s %s %s %s\n",
478 (int)event->event_type,
479 ((endLink_t)event->data)->type->id,
480 ((endLink_t)event->data)->container->id,
481 ((endLink_t)event->data)->value,
482 ((endLink_t)event->data)->destContainer->id,
483 ((endLink_t)event->data)->key);
485 fprintf(tracing_file, "%d %lf %s %s %s %s %s\n",
486 (int)event->event_type,
488 ((endLink_t)event->data)->type->id,
489 ((endLink_t)event->data)->container->id,
490 ((endLink_t)event->data)->value,
491 ((endLink_t)event->data)->destContainer->id,
492 ((endLink_t)event->data)->key);
496 static void print_pajeNewEvent (paje_event_t event)
498 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
499 if (event->timestamp == 0){
500 fprintf(tracing_file, "%d 0 %s %s %s\n",
501 (int)event->event_type,
502 ((newEvent_t)event->data)->type->id,
503 ((newEvent_t)event->data)->container->id,
504 ((newEvent_t)event->data)->value->id);
506 fprintf(tracing_file, "%d %lf %s %s %s\n",
507 (int)event->event_type,
509 ((newEvent_t)event->data)->type->id,
510 ((newEvent_t)event->data)->container->id,
511 ((newEvent_t)event->data)->value->id);
515 static void free_paje_event (paje_event_t event)
517 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
518 switch (event->event_type){
520 xbt_free (((startLink_t)(event->data))->value);
521 xbt_free (((startLink_t)(event->data))->key);
524 xbt_free (((endLink_t)(event->data))->value);
525 xbt_free (((endLink_t)(event->data))->key);
530 xbt_free (event->data);
534 void new_pajeDefineContainerType(type_t type)
536 paje_event_t event = xbt_new0(s_paje_event_t, 1);
537 event->event_type = PAJE_DefineContainerType;
538 event->timestamp = 0;
539 event->print = print_pajeDefineContainerType;
540 event->free = free_paje_event;
541 event->data = xbt_new0(s_defineContainerType_t, 1);
542 ((defineContainerType_t)(event->data))->type = type;
544 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
547 event->print (event);
551 void new_pajeDefineVariableType(type_t type)
553 paje_event_t event = xbt_new0(s_paje_event_t, 1);
554 event->event_type = PAJE_DefineVariableType;
555 event->timestamp = 0;
556 event->print = print_pajeDefineVariableType;
557 event->free = free_paje_event;
558 event->data = xbt_new0(s_defineVariableType_t, 1);
559 ((defineVariableType_t)(event->data))->type = type;
561 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
564 event->print (event);
568 void new_pajeDefineStateType(type_t type)
570 paje_event_t event = xbt_new0(s_paje_event_t, 1);
571 event->event_type = PAJE_DefineStateType;
572 event->timestamp = 0;
573 event->print = print_pajeDefineStateType;
574 event->free = free_paje_event;
575 event->data = xbt_new0(s_defineStateType_t, 1);
576 ((defineStateType_t)(event->data))->type = type;
578 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
581 event->print (event);
585 void new_pajeDefineEventType(type_t type)
587 paje_event_t event = xbt_new0(s_paje_event_t, 1);
588 event->event_type = PAJE_DefineEventType;
589 event->timestamp = 0;
590 event->print = print_pajeDefineEventType;
591 event->free = free_paje_event;
592 event->data = xbt_new0(s_defineEventType_t, 1);
593 ((defineEventType_t)(event->data))->type = type;
595 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
598 event->print (event);
602 void new_pajeDefineLinkType(type_t type, type_t source, type_t dest)
604 paje_event_t event = xbt_new0(s_paje_event_t, 1);
605 event->event_type = PAJE_DefineLinkType;
606 event->timestamp = 0;
607 event->print = print_pajeDefineLinkType;
608 event->free = free_paje_event;
609 event->data = xbt_new0(s_defineLinkType_t, 1);
610 ((defineLinkType_t)(event->data))->type = type;
611 ((defineLinkType_t)(event->data))->source = source;
612 ((defineLinkType_t)(event->data))->dest = dest;
614 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
617 event->print (event);
621 void new_pajeDefineEntityValue (val_t value)
623 paje_event_t event = xbt_new0(s_paje_event_t, 1);
624 event->event_type = PAJE_DefineEntityValue;
625 event->timestamp = 0;
626 event->print = print_pajeDefineEntityValue;
627 event->free = free_paje_event;
628 event->data = xbt_new0(s_defineEntityValue_t, 1);
629 ((defineEntityValue_t)(event->data))->value = value;
631 XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
634 event->print (event);
638 void new_pajeCreateContainer (container_t container)
640 paje_event_t event = xbt_new0(s_paje_event_t, 1);
641 event->event_type = PAJE_CreateContainer;
642 event->timestamp = SIMIX_get_clock();
643 event->print = print_pajeCreateContainer;
644 event->free = free_paje_event;
645 event->data = xbt_new0(s_createContainer_t, 1);
646 ((createContainer_t)(event->data))->container = container;
648 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
651 event->print (event);
655 void new_pajeDestroyContainer (container_t container)
657 paje_event_t event = xbt_new0(s_paje_event_t, 1);
658 event->event_type = PAJE_DestroyContainer;
659 event->timestamp = SIMIX_get_clock();
660 event->print = print_pajeDestroyContainer;
661 event->free = free_paje_event;
662 event->data = xbt_new0(s_destroyContainer_t, 1);
663 ((destroyContainer_t)(event->data))->container = container;
665 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
668 event->print (event);
672 void new_pajeSetVariable (double timestamp, container_t container, type_t type, double value)
674 paje_event_t event = xbt_new0(s_paje_event_t, 1);
675 event->event_type = PAJE_SetVariable;
676 event->timestamp = timestamp;
677 event->print = print_pajeSetVariable;
678 event->free = free_paje_event;
679 event->data = xbt_new0(s_setVariable_t, 1);
680 ((setVariable_t)(event->data))->type = type;
681 ((setVariable_t)(event->data))->container = container;
682 ((setVariable_t)(event->data))->value = value;
684 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
686 insert_into_buffer (event);
690 void new_pajeAddVariable (double timestamp, container_t container, type_t type, double value)
692 paje_event_t event = xbt_new0(s_paje_event_t, 1);
693 event->event_type = PAJE_AddVariable;
694 event->timestamp = timestamp;
695 event->print = print_pajeAddVariable;
696 event->free = free_paje_event;
697 event->data = xbt_new0(s_addVariable_t, 1);
698 ((addVariable_t)(event->data))->type = type;
699 ((addVariable_t)(event->data))->container = container;
700 ((addVariable_t)(event->data))->value = value;
702 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
704 insert_into_buffer (event);
707 void new_pajeSubVariable (double timestamp, container_t container, type_t type, double value)
709 paje_event_t event = xbt_new0(s_paje_event_t, 1);
710 event->event_type = PAJE_SubVariable;
711 event->timestamp = timestamp;
712 event->print = print_pajeSubVariable;
713 event->free = free_paje_event;
714 event->data = xbt_new0(s_subVariable_t, 1);
715 ((subVariable_t)(event->data))->type = type;
716 ((subVariable_t)(event->data))->container = container;
717 ((subVariable_t)(event->data))->value = value;
719 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
721 insert_into_buffer (event);
724 void new_pajeSetState (double timestamp, container_t container, type_t type, val_t value)
726 paje_event_t event = xbt_new0(s_paje_event_t, 1);
727 event->event_type = PAJE_SetState;
728 event->timestamp = timestamp;
729 event->print = print_pajeSetState;
730 event->free = free_paje_event;
731 event->data = xbt_new0(s_setState_t, 1);
732 ((setState_t)(event->data))->type = type;
733 ((setState_t)(event->data))->container = container;
734 ((setState_t)(event->data))->value = value;
736 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
738 insert_into_buffer (event);
742 void new_pajePushState (double timestamp, container_t container, type_t type, val_t value)
744 paje_event_t event = xbt_new0(s_paje_event_t, 1);
745 event->event_type = PAJE_PushState;
746 event->timestamp = timestamp;
747 event->print = print_pajePushState;
748 event->free = free_paje_event;
749 event->data = xbt_new0(s_pushState_t, 1);
750 ((pushState_t)(event->data))->type = type;
751 ((pushState_t)(event->data))->container = container;
752 ((pushState_t)(event->data))->value = value;
754 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
756 insert_into_buffer (event);
760 void new_pajePopState (double timestamp, container_t container, type_t type)
762 paje_event_t event = xbt_new0(s_paje_event_t, 1);
763 event->event_type = PAJE_PopState;
764 event->timestamp = timestamp;
765 event->print = print_pajePopState;
766 event->free = free_paje_event;
767 event->data = xbt_new0(s_popState_t, 1);
768 ((popState_t)(event->data))->type = type;
769 ((popState_t)(event->data))->container = container;
771 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
773 insert_into_buffer (event);
777 void new_pajeResetState (double timestamp, container_t container, type_t type)
779 paje_event_t event = xbt_new0(s_paje_event_t, 1);
780 event->event_type = PAJE_ResetState;
781 event->timestamp = timestamp;
782 event->print = print_pajeResetState;
783 event->free = free_paje_event;
784 event->data = xbt_new0(s_resetState_t, 1);
785 ((resetState_t)(event->data))->type = type;
786 ((resetState_t)(event->data))->container = container;
788 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
790 insert_into_buffer (event);
793 void new_pajeStartLink (double timestamp, container_t container, type_t type, container_t sourceContainer, const char *value, const char *key)
795 paje_event_t event = xbt_new0(s_paje_event_t, 1);
796 event->event_type = PAJE_StartLink;
797 event->timestamp = timestamp;
798 event->print = print_pajeStartLink;
799 event->free = free_paje_event;
800 event->data = xbt_new0(s_startLink_t, 1);
801 ((startLink_t)(event->data))->type = type;
802 ((startLink_t)(event->data))->container = container;
803 ((startLink_t)(event->data))->sourceContainer = sourceContainer;
804 ((startLink_t)(event->data))->value = xbt_strdup(value);
805 ((startLink_t)(event->data))->key = xbt_strdup(key);
807 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
809 insert_into_buffer (event);
812 void new_pajeEndLink (double timestamp, container_t container, type_t type, container_t destContainer, const char *value, const char *key)
814 paje_event_t event = xbt_new0(s_paje_event_t, 1);
815 event->event_type = PAJE_EndLink;
816 event->timestamp = timestamp;
817 event->print = print_pajeEndLink;
818 event->free = free_paje_event;
819 event->data = xbt_new0(s_endLink_t, 1);
820 ((endLink_t)(event->data))->type = type;
821 ((endLink_t)(event->data))->container = container;
822 ((endLink_t)(event->data))->destContainer = destContainer;
823 ((endLink_t)(event->data))->value = xbt_strdup(value);
824 ((endLink_t)(event->data))->key = xbt_strdup(key);
826 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
828 insert_into_buffer (event);
831 void new_pajeNewEvent (double timestamp, container_t container, type_t type, val_t value)
833 paje_event_t event = xbt_new0(s_paje_event_t, 1);
834 event->event_type = PAJE_NewEvent;
835 event->timestamp = timestamp;
836 event->print = print_pajeNewEvent;
837 event->free = free_paje_event;
838 event->data = xbt_new0(s_newEvent_t, 1);
839 ((newEvent_t)(event->data))->type = type;
840 ((newEvent_t)(event->data))->container = container;
841 ((newEvent_t)(event->data))->value = value;
843 XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
845 insert_into_buffer (event);
848 #endif /* HAVE_TRACING */