todo:
- leaking memory now, to be fixed in the next commits
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@9323
48e7efb5-ca39-0410-a469-
dd3cf9ba447f
TRACE_generate_triva_cat_conf();
}
TRACE_generate_triva_cat_conf();
}
+ /* dump trace buffer */
+ TRACE_paje_dump_buffer();
+
/* destroy all data structures of tracing (and free) */
destroyAllContainers();
/* destroy all data structures of tracing (and free) */
destroyAllContainers();
static FILE *tracing_file = NULL;
static FILE *tracing_file = NULL;
+static xbt_dynar_t buffer = NULL;
void TRACE_paje_start(void)
{
void TRACE_paje_start(void)
{
/* output header */
TRACE_paje_create_header();
/* output header */
TRACE_paje_create_header();
+
+ buffer = xbt_dynar_new (sizeof(paje_event_t), NULL);
}
void TRACE_paje_end(void)
}
void TRACE_paje_end(void)
DEBUG1("Filename %s is closed", filename);
}
DEBUG1("Filename %s is closed", filename);
}
+void TRACE_paje_dump_buffer (void)
+{
+ paje_event_t event;
+ while (xbt_dynar_length (buffer) > 0){
+ xbt_dynar_remove_at (buffer, 0, &event);
+ event->print (event);
+ }
+}
+
void TRACE_paje_create_header(void)
{
DEBUG0 ("Define paje header");
void TRACE_paje_create_header(void)
{
DEBUG0 ("Define paje header");
}
/* internal do the instrumentation module */
}
/* internal do the instrumentation module */
+static void insert_into_buffer (paje_event_t tbi)
+{
+ unsigned int i;
+ if (xbt_dynar_length(buffer) == 0){
+ xbt_dynar_push (buffer, &tbi);
+ }else{
+ int inserted = 0;
+ for (i = 0; i < xbt_dynar_length(buffer); i++){
+ paje_event_t e1 = *(paje_event_t*)xbt_dynar_get_ptr(buffer, i);
+ if (e1->timestamp > tbi->timestamp){
+ xbt_dynar_insert_at (buffer, i, &tbi);
+ inserted = 1;
+ break;
+ }
+ }
+ if (!inserted){
+ xbt_dynar_push (buffer, &tbi);
+ }
+ }
+}
+
static void print_pajeDefineContainerType(paje_event_t event)
{
fprintf(tracing_file, "%d %s %s %s\n",
static void print_pajeDefineContainerType(paje_event_t event)
{
fprintf(tracing_file, "%d %s %s %s\n",
((setVariable_t)(event->data))->container = container;
((setVariable_t)(event->data))->value = value;
((setVariable_t)(event->data))->container = container;
((setVariable_t)(event->data))->value = value;
+ insert_into_buffer (event);
+ return;
+
//print it
event->print (event);
//print it
event->print (event);
((addVariable_t)(event->data))->container = container;
((addVariable_t)(event->data))->value = value;
((addVariable_t)(event->data))->container = container;
((addVariable_t)(event->data))->value = value;
+ insert_into_buffer (event);
+ return;
+
//print it
event->print (event);
//print it
event->print (event);
((subVariable_t)(event->data))->container = container;
((subVariable_t)(event->data))->value = value;
((subVariable_t)(event->data))->container = container;
((subVariable_t)(event->data))->value = value;
+ insert_into_buffer (event);
+ return;
+
//print it
event->print (event);
//print it
event->print (event);
((setState_t)(event->data))->container = container;
((setState_t)(event->data))->value = xbt_strdup(value);
((setState_t)(event->data))->container = container;
((setState_t)(event->data))->value = xbt_strdup(value);
+ insert_into_buffer (event);
+ return;
+
//print it
event->print (event);
//print it
event->print (event);
((pushState_t)(event->data))->container = container;
((pushState_t)(event->data))->value = xbt_strdup(value);
((pushState_t)(event->data))->container = container;
((pushState_t)(event->data))->value = xbt_strdup(value);
+ insert_into_buffer (event);
+ return;
+
//print it
event->print (event);
//print it
event->print (event);
((popState_t)(event->data))->type = type;
((popState_t)(event->data))->container = container;
((popState_t)(event->data))->type = type;
((popState_t)(event->data))->container = container;
+ insert_into_buffer (event);
+ return;
+
//print it
event->print (event);
//print it
event->print (event);
((startLink_t)(event->data))->value = xbt_strdup(value);
((startLink_t)(event->data))->key = xbt_strdup(key);
((startLink_t)(event->data))->value = xbt_strdup(value);
((startLink_t)(event->data))->key = xbt_strdup(key);
+ insert_into_buffer (event);
+ return;
+
//print it
event->print (event);
//print it
event->print (event);
((endLink_t)(event->data))->value = xbt_strdup(value);
((endLink_t)(event->data))->key = xbt_strdup(key);
((endLink_t)(event->data))->value = xbt_strdup(value);
((endLink_t)(event->data))->key = xbt_strdup(key);
+ insert_into_buffer (event);
+ return;
+
//print it
event->print (event);
//print it
event->print (event);
((newEvent_t)(event->data))->container = container;
((newEvent_t)(event->data))->value = xbt_strdup(value);
((newEvent_t)(event->data))->container = container;
((newEvent_t)(event->data))->value = xbt_strdup(value);
+ insert_into_buffer (event);
+ return;
+
//print it
event->print (event);
//print it
event->print (event);
void TRACE_paje_create_header(void);
void TRACE_paje_start(void);
void TRACE_paje_end(void);
void TRACE_paje_create_header(void);
void TRACE_paje_start(void);
void TRACE_paje_end(void);
+void TRACE_paje_dump_buffer (void);
void new_pajeDefineContainerType(type_t type);
void new_pajeDefineVariableType(type_t type);
void new_pajeDefineStateType(type_t type);
void new_pajeDefineContainerType(type_t type);
void new_pajeDefineVariableType(type_t type);
void new_pajeDefineStateType(type_t type);
+
+#ifdef HAVE_TRACING
+ //NOW changed, dump buffer
+ TRACE_paje_dump_buffer ();
+#endif
+
DEBUG0("Looking for next action end");
xbt_dynar_foreach(model_list, iter, model) {
DEBUG1("Running for Resource [%s]", model->name);
DEBUG0("Looking for next action end");
xbt_dynar_foreach(model_list, iter, model) {
DEBUG1("Running for Resource [%s]", model->name);