Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
MSG: register a SIMIX copy data callback only if necessary
authorChristophe Thiéry <christopho128@gmail.com>
Thu, 12 Jan 2012 09:14:08 +0000 (10:14 +0100)
committerChristophe Thiéry <christopho128@gmail.com>
Thu, 12 Jan 2012 09:14:08 +0000 (10:14 +0100)
src/msg/msg_global.c
src/msg/msg_task.c

index 404d8bf..b10d9c4 100644 (file)
@@ -75,7 +75,6 @@ void MSG_global_init(int *argc, char **argv)
     SIMIX_function_register_process_create(MSG_process_create_from_SIMIX);
     SIMIX_function_register_process_cleanup(MSG_process_cleanup_from_SIMIX);
     SIMIX_function_register_process_kill(MSG_process_kill_from_SIMIX);
     SIMIX_function_register_process_create(MSG_process_create_from_SIMIX);
     SIMIX_function_register_process_cleanup(MSG_process_cleanup_from_SIMIX);
     SIMIX_function_register_process_kill(MSG_process_kill_from_SIMIX);
-    SIMIX_comm_set_copy_data_callback(MSG_comm_copy_data_from_SIMIX);
   }
 #ifdef HAVE_TRACING
   TRACE_start();
   }
 #ifdef HAVE_TRACING
   TRACE_start();
index f453edc..609dc7b 100644 (file)
@@ -110,7 +110,15 @@ void MSG_task_set_data(m_task_t task, void *data)
  */
 void MSG_task_set_copy_callback(void (*callback)
     (m_task_t task, m_process_t sender, m_process_t receiver)) {
  */
 void MSG_task_set_copy_callback(void (*callback)
     (m_task_t task, m_process_t sender, m_process_t receiver)) {
+
   msg_global->task_copy_callback = callback;
   msg_global->task_copy_callback = callback;
+
+  if (callback) {
+    SIMIX_comm_set_copy_data_callback(MSG_comm_copy_data_from_SIMIX);
+  }
+  else {
+    SIMIX_comm_set_copy_data_callback(SIMIX_comm_copy_pointer_callback);
+  }
 }
 
 /** \ingroup m_task_management
 }
 
 /** \ingroup m_task_management