Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[trace] registering the tracing categories of mpi processes in dictionary
authorschnorr <schnorr@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Tue, 7 Dec 2010 09:56:25 +0000 (09:56 +0000)
committerschnorr <schnorr@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Tue, 7 Dec 2010 09:56:25 +0000 (09:56 +0000)
details:
- function to get the current tracing category of a process

git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@9038 48e7efb5-ca39-0410-a469-dd3cf9ba447f

src/instr/instr_private.h
src/instr/instr_smpi.c
src/smpi/smpi_pmpi.c

index 49e5aa9..c6e1479 100644 (file)
@@ -126,6 +126,8 @@ int TRACE_surf_gtnets_get_dst(void *action);
 void TRACE_surf_gtnets_destroy(void *action);
 
 /* from smpi_instr.c */
 void TRACE_surf_gtnets_destroy(void *action);
 
 /* from smpi_instr.c */
+void TRACE_internal_smpi_set_category (const char *category);
+const char *TRACE_internal_smpi_get_category (void);
 void TRACE_smpi_alloc(void);
 void TRACE_smpi_release(void);
 void TRACE_smpi_init(int rank);
 void TRACE_smpi_alloc(void);
 void TRACE_smpi_release(void);
 void TRACE_smpi_init(int rank);
index abb1af1..db64b26 100644 (file)
@@ -52,9 +52,33 @@ static char *TRACE_smpi_get_key(int src, int dst, char *key, int n)
   return key;
 }
 
   return key;
 }
 
+static xbt_dict_t process_category;
+
+void TRACE_internal_smpi_set_category (const char *category)
+{
+  if (!TRACE_smpi_is_enabled()) return;
+
+  char processid[INSTR_DEFAULT_STR_SIZE];
+  snprintf (processid, INSTR_DEFAULT_STR_SIZE, "%p", SIMIX_process_self());
+  if (xbt_dict_get_or_null (process_category, processid))
+    xbt_dict_remove (process_category, processid);
+  if (category != NULL)
+    xbt_dict_set (process_category, processid, xbt_strdup(category), xbt_free);
+}
+
+const char *TRACE_internal_smpi_get_category (void)
+{
+  if (!TRACE_smpi_is_enabled()) return NULL;
+
+  char processid[INSTR_DEFAULT_STR_SIZE];
+  snprintf (processid, INSTR_DEFAULT_STR_SIZE, "%p", SIMIX_process_self());
+  return xbt_dict_get_or_null (process_category, processid);
+}
+
 void TRACE_smpi_alloc()
 {
   keys = xbt_dict_new();
 void TRACE_smpi_alloc()
 {
   keys = xbt_dict_new();
+  process_category = xbt_dict_new();
 }
 
 void TRACE_smpi_start(void)
 }
 
 void TRACE_smpi_start(void)
index 581cd1d..6749928 100644 (file)
@@ -17,19 +17,7 @@ void TRACE_smpi_set_category(const char *category)
 {
   //need to end bench otherwise categories for execution tasks are wrong
   smpi_bench_end();
 {
   //need to end bench otherwise categories for execution tasks are wrong
   smpi_bench_end();
-  int ret;
-  if (!TRACE_is_enabled()){
-    ret = 1;
-  }else{
-    if (category != NULL) {
-      ret = TRACE_category(category);
-      TRACE_category_set(SIMIX_process_self(), category);
-    }else{
-      //if category is NULL, trace of platform is disabled for this process
-      TRACE_category_unset(SIMIX_process_self());
-      ret = 0;
-    }
-  }
+  TRACE_internal_smpi_set_category (category);
   //begin bench after changing process's category
   smpi_bench_begin();
 }
   //begin bench after changing process's category
   smpi_bench_begin();
 }