Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Huge import with Lucas tracing modifications.
[simgrid.git] / src / instr / smx_instr.c
diff --git a/src/instr/smx_instr.c b/src/instr/smx_instr.c
new file mode 100644 (file)
index 0000000..675ec54
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * smx.c
+ *
+ *  Created on: Nov 24, 2009
+ *      Author: Lucas Schnorr
+ *     License: 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.
+ *
+ *     Copyright (c) 2009 The SimGrid team.
+ */
+
+#include "instr/private.h"
+#include "instr/config.h"
+
+#ifdef HAVE_TRACING
+
+static long long int counter = 0; /* to uniquely identify simix actions */
+
+void TRACE_smx_action_execute (smx_action_t act)
+{
+  if (!IS_TRACING) return;
+
+  act->counter = counter++;
+  char *category = __TRACE_current_category_get (SIMIX_process_self());
+  if (category){
+       act->category = xbt_new (char, strlen (category)+1);
+       strncpy (act->category, category, strlen(category)+1);
+  }
+}
+
+void TRACE_smx_action_communicate (smx_action_t act, smx_process_t proc)
+{
+  if (!IS_TRACING) return;
+
+  act->counter = counter++;
+  char *category = __TRACE_current_category_get (proc);
+  if (category){
+       act->category = xbt_new (char, strlen (category)+1);
+       strncpy (act->category, category, strlen(category)+1);
+  }
+}
+
+void TRACE_smx_action_destroy (smx_action_t act)
+{
+  if (!IS_TRACING || !IS_TRACED(act)) return;
+
+  if (act->category){
+    xbt_free (act->category);
+  }
+}
+
+#endif