set(TRACING_SRC
src/instr/instr_config.c
+ src/instr/categories.c
src/instr/interface.c
src/instr/general.c
src/instr/paje.c
--- /dev/null
+/* Copyright (c) 2010. The SimGrid Team.
+ * All rights reserved. */
+
+/* This program is free software; you can redistribute it and/or modify it
+ * under the terms of the license (GNU LGPL) which comes with this package. */
+
+#include "instr/private.h"
+
+#ifdef HAVE_TRACING
+
+static xbt_dict_t current_task_category = NULL;
+
+void __TRACE_category_init ()
+{
+ current_task_category = xbt_dict_new();
+}
+
+void __TRACE_category_set (smx_process_t proc, const char *category)
+{
+ char processid[100];
+ char *var_cpy = NULL;
+ snprintf (processid, 100, "%p", proc);
+ var_cpy = xbt_strdup (category);
+ xbt_dict_set (current_task_category, processid, var_cpy, xbt_free);
+}
+
+char *__TRACE_category_get (smx_process_t proc)
+{
+ char processid[100];
+ snprintf (processid, 100, "%p", proc);
+ return xbt_dict_get_or_null (current_task_category, processid);
+}
+
+void __TRACE_category_unset (smx_process_t proc)
+{
+ char processid[100];
+ snprintf (processid, 100, "%p", proc);
+ xbt_dict_remove (current_task_category, processid);
+}
+
+void __TRACE_msg_category_set (smx_process_t proc, m_task_t task)
+{
+ __TRACE_category_set (proc, task->category);
+}
+
+
+#endif
defined_types = xbt_dict_new();
created_categories = xbt_dict_new();
__TRACE_msg_init();
+ __TRACE_category_init ();
__TRACE_surf_init();
__TRACE_msg_process_init ();
__TRACE_smpi_init ();
#ifdef HAVE_TRACING
static xbt_dict_t task_containers = NULL;
-static xbt_dict_t current_task_category = NULL;
void __TRACE_msg_init (void)
{
- current_task_category = xbt_dict_new();
task_containers = xbt_dict_new();
}
-void __TRACE_current_category_set (m_task_t task)
-{
- char processid[100];
- char *var_cpy = NULL;
- snprintf (processid, 100, "%p", SIMIX_process_self());
- var_cpy = xbt_strdup (task->category);
- xbt_dict_set (current_task_category, processid, var_cpy, xbt_free);
-}
-
-void __TRACE_current_category_unset ()
-{
- char processid[100];
- snprintf (processid, 100, "%p", SIMIX_process_self());
- xbt_dict_remove (current_task_category, processid);
-}
-
-char *__TRACE_current_category_get (smx_process_t proc)
-{
- char processid[100];
- snprintf (processid, 100, "%p", proc);
- return xbt_dict_get_or_null (current_task_category, processid);
-}
-
void __TRACE_task_location (m_task_t task)
{
char container[200];
TRACE_task_container (task, name, 200);
if (IS_TRACING_TASKS) pajePushState (MSG_get_clock(), "task-state", name, "execute");
- __TRACE_current_category_set (task);
+ __TRACE_msg_category_set (SIMIX_process_self(), task);
}
void TRACE_msg_task_execute_end (m_task_t task)
TRACE_task_container (task, name, 200);
if (IS_TRACING_TASKS) pajePopState (MSG_get_clock(), "task-state", name);
- __TRACE_current_category_unset();
+ __TRACE_category_unset(SIMIX_process_self());
}
/* MSG_task_destroy related functions */
__TRACE_task_location_not_present (task);
//set current category
- __TRACE_current_category_set (task);
+ __TRACE_msg_category_set (SIMIX_process_self(), task);
return 1;
}
{
if (!IS_TRACING) return;
- __TRACE_current_category_unset ();
+ __TRACE_category_unset (SIMIX_process_self());
}
#endif
char *TRACE_process_alias_container (m_process_t process, m_host_t host, char *output, int len);
char *TRACE_task_alias_container (m_task_t task, m_process_t process, m_host_t host, char *output, int len);
+/* from categories.c */
+void __TRACE_category_init (void);
+void __TRACE_category_set (smx_process_t proc, const char *category);
+char *__TRACE_category_get (smx_process_t proc);
+void __TRACE_category_unset (smx_process_t proc);
+void __TRACE_msg_category_set (smx_process_t proc, m_task_t task);
+
/* declaration of instrumentation functions from msg_task_instr.c */
void __TRACE_msg_init (void);
-void __TRACE_current_category_set (m_task_t task);
-void __TRACE_current_category_unset (void);
-char *__TRACE_current_category_get (smx_process_t proc);
void __TRACE_task_location (m_task_t task);
void __TRACE_task_location_present (m_task_t task);
void __TRACE_task_location_not_present (m_task_t task);
if (!IS_TRACING) return;
act->counter = counter++;
- category = __TRACE_current_category_get (SIMIX_process_self());
+ category = __TRACE_category_get (SIMIX_process_self());
if (category){
act->category = xbt_new (char, strlen (category)+1);
strncpy (act->category, category, strlen(category)+1);
if (!IS_TRACING) return;
act->counter = counter++;
- category = __TRACE_current_category_get (proc);
+ category = __TRACE_category_get (proc);
if (category){
act->category = xbt_strdup (category);
}