Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
rename simdata_process_t into MsgActorExt
authorMartin Quinson <martin.quinson@loria.fr>
Thu, 16 Feb 2017 00:08:20 +0000 (01:08 +0100)
committerMartin Quinson <martin.quinson@loria.fr>
Thu, 16 Feb 2017 00:08:20 +0000 (01:08 +0100)
src/msg/msg_gos.cpp
src/msg/msg_private.h
src/msg/msg_process.cpp
src/smpi/smpi_global.cpp

index 0d63305..643143c 100644 (file)
@@ -45,7 +45,7 @@ msg_error_t MSG_parallel_task_execute(msg_task_t task)
 msg_error_t MSG_parallel_task_execute_with_timeout(msg_task_t task, double timeout)
 {
   simdata_task_t simdata = task->simdata;
-  simdata_process_t p_simdata = static_cast<simdata_process_t>(SIMIX_process_self_get_data());
+  MsgActorExt* p_simdata = static_cast<MsgActorExt*>(SIMIX_process_self_get_data());
   e_smx_state_t comp_state;
   msg_error_t status = MSG_OK;
 
@@ -310,7 +310,7 @@ static inline msg_comm_t MSG_task_isend_internal(msg_task_t task, const char *al
   /* Prepare the task to send */
   t_simdata = task->simdata;
   t_simdata->sender = myself;
-  t_simdata->source = (static_cast<simdata_process_t>(SIMIX_process_self_get_data()))->m_host;
+  t_simdata->source = (static_cast<MsgActorExt*>(SIMIX_process_self_get_data()))->m_host;
   t_simdata->setUsed();
   t_simdata->comm = nullptr;
   msg_global->sent_msg++;
@@ -775,7 +775,7 @@ msg_error_t MSG_task_send_with_timeout(msg_task_t task, const char *alias, doubl
   msg_error_t ret = MSG_OK;
   simdata_task_t t_simdata = nullptr;
   msg_process_t process = MSG_process_self();
-  simdata_process_t p_simdata = static_cast<simdata_process_t>(SIMIX_process_self_get_data());
+  MsgActorExt* p_simdata           = static_cast<MsgActorExt*>(process->data);
   simgrid::s4u::MailboxPtr mailbox = simgrid::s4u::Mailbox::byName(alias);
 
   int call_end = TRACE_msg_task_put_start(task);    //must be after CHECK_HOST()
@@ -783,7 +783,7 @@ msg_error_t MSG_task_send_with_timeout(msg_task_t task, const char *alias, doubl
   /* Prepare the task to send */
   t_simdata = task->simdata;
   t_simdata->sender = process;
-  t_simdata->source = (static_cast<simdata_process_t>(SIMIX_process_self_get_data()))   ->m_host;
+  t_simdata->source = (static_cast<MsgActorExt*>(SIMIX_process_self_get_data()))->m_host;
 
   t_simdata->setUsed();
 
index d1b9ad2..394ed86 100644 (file)
@@ -75,14 +75,15 @@ typedef struct simdata_file {
 
 /******************************* Process *************************************/
 
-typedef struct simdata_process {
-  msg_host_t m_host;              /* the host on which the process is running */
-  smx_activity_t waiting_action;
-  msg_task_t waiting_task;
-  msg_error_t last_errno;       /* the last value returned by a MSG_function */
-
-  void* data;                   /* user data */
-} s_simdata_process_t, *simdata_process_t;
+class MsgActorExt {
+public:
+  msg_host_t m_host; /* the host on which the process is running */
+  smx_activity_t waiting_action = nullptr;
+  msg_task_t waiting_task       = nullptr;
+  msg_error_t last_errno        = MSG_OK; /* the last value returned by a MSG_function */
+
+  void* data = nullptr; /* user data */
+};
 
 typedef struct process_arg {
   const char *name;
index e5e089a..82d6774 100644 (file)
@@ -24,29 +24,29 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(msg_process, msg, "Logging specific to MSG (proc
  * \brief Cleans the MSG data of a process.
  * \param smx_proc a SIMIX process
  */
-void MSG_process_cleanup_from_SIMIX(smx_actor_t smx_proc)
+void MSG_process_cleanup_from_SIMIX(smx_actor_t smx_actor)
 {
-  simdata_process_t msg_proc;
+  MsgActorExt* msg_actor;
 
   // get the MSG process from the SIMIX process
-  if (smx_proc == SIMIX_process_self()) {
+  if (smx_actor == SIMIX_process_self()) {
     /* avoid a SIMIX request if this function is called by the process itself */
-    msg_proc = (simdata_process_t) SIMIX_process_self_get_data();
+    msg_actor = (MsgActorExt*)SIMIX_process_self_get_data();
     SIMIX_process_self_set_data(nullptr);
   } else {
-    msg_proc = (simdata_process_t)smx_proc->data;
-    simcall_process_set_data(smx_proc, nullptr);
+    msg_actor = (MsgActorExt*)smx_actor->data;
+    simcall_process_set_data(smx_actor, nullptr);
   }
 
-  TRACE_msg_process_destroy(smx_proc->name.c_str(), smx_proc->pid);
+  TRACE_msg_process_destroy(smx_actor->name.c_str(), smx_actor->pid);
   // free the data if a function was provided
-  if (msg_proc && msg_proc->data && msg_global->process_data_cleanup) {
-    msg_global->process_data_cleanup(msg_proc->data);
+  if (msg_actor && msg_actor->data && msg_global->process_data_cleanup) {
+    msg_global->process_data_cleanup(msg_actor->data);
   }
 
   // free the MSG process
-  xbt_free(msg_proc);
-  SIMIX_process_cleanup(smx_proc);
+  xbt_free(msg_actor);
+  SIMIX_process_cleanup(smx_actor);
 }
 
 /* This function creates a MSG process. It has the prototype enforced by SIMIX_function_register_process_create */
@@ -141,20 +141,16 @@ msg_process_t MSG_process_create_with_environment(
   msg_host_t host, xbt_dict_t properties)
 {
   xbt_assert(code != nullptr && host != nullptr, "Invalid parameters: host and code params must not be nullptr");
-  simdata_process_t simdata = xbt_new0(s_simdata_process_t, 1);
-  msg_process_t process;
+  MsgActorExt* simdata = new MsgActorExt();
 
   /* Simulator data for MSG */
-  simdata->waiting_action = nullptr;
-  simdata->waiting_task = nullptr;
   simdata->m_host = host;
   simdata->data = data;
   simdata->last_errno = MSG_OK;
 
   /* Let's create the process: SIMIX may decide to start it right now,
    * even before returning the flow control to us */
-  process = simcall_process_create(
-    name, std::move(code), simdata, host, -1,  properties, 0);
+  msg_process_t process = simcall_process_create(name, std::move(code), simdata, host, -1, properties, 0);
 
   if (!process) {
     /* Undo everything we have just changed */
@@ -183,18 +179,14 @@ static int MSG_maestro(int argc, char** argv)
 msg_process_t MSG_process_attach(const char *name, void *data, msg_host_t host, xbt_dict_t properties)
 {
   xbt_assert(host != nullptr, "Invalid parameters: host and code params must not be nullptr");
-  simdata_process_t simdata = xbt_new0(s_simdata_process_t, 1);
-  msg_process_t process;
+  MsgActorExt* msgExt = new MsgActorExt();
 
   /* Simulator data for MSG */
-  simdata->waiting_action = nullptr;
-  simdata->waiting_task = nullptr;
-  simdata->m_host = host;
-  simdata->data = data;
-  simdata->last_errno = MSG_OK;
+  msgExt->m_host = host;
+  msgExt->data   = data;
 
   /* Let's create the process: SIMIX may decide to start it right now, even before returning the flow control to us */
-  process = SIMIX_process_attach(name, simdata, host->cname(), properties, nullptr);
+  msg_process_t process = SIMIX_process_attach(name, msgExt, host->cname(), properties, nullptr);
   if (!process)
     xbt_die("Could not attach");
   simcall_process_on_exit(process,(int_f_pvoid_pvoid_t)TRACE_msg_process_kill,process);
@@ -241,9 +233,9 @@ msg_error_t MSG_process_join(msg_process_t process, double timeout){
  */
 msg_error_t MSG_process_migrate(msg_process_t process, msg_host_t host)
 {
-  simdata_process_t simdata = (simdata_process_t)process->data;
-  simdata->m_host = host;
-  msg_host_t now = simdata->m_host;
+  MsgActorExt* msgExt = (MsgActorExt*)process->data;
+  msgExt->m_host      = host;
+  msg_host_t now      = msgExt->m_host;
   TRACE_msg_process_change_host(process, now, host);
   simcall_process_set_host(process, host);
   return MSG_OK;
@@ -265,9 +257,9 @@ void* MSG_process_get_data(msg_process_t process)
   xbt_assert(process != nullptr, "Invalid parameter: first parameter must not be nullptr!");
 
   /* get from SIMIX the MSG process data, and then the user data */
-  simdata_process_t simdata = (simdata_process_t)process->data;
-  if (simdata)
-    return simdata->data;
+  MsgActorExt* msgExt = (MsgActorExt*)process->data;
+  if (msgExt)
+    return msgExt->data;
   else
     return nullptr;
 }
@@ -281,8 +273,8 @@ msg_error_t MSG_process_set_data(msg_process_t process, void *data)
 {
   xbt_assert(process != nullptr, "Invalid parameter: first parameter must not be nullptr!");
 
-  simdata_process_t simdata = (simdata_process_t)process->data;
-  simdata->data = data;
+  MsgActorExt* msgExt = (MsgActorExt*)process->data;
+  msgExt->data        = data;
 
   return MSG_OK;
 }
@@ -302,14 +294,14 @@ XBT_PUBLIC(void) MSG_process_set_data_cleanup(void_f_pvoid_t data_cleanup) {
  */
 msg_host_t MSG_process_get_host(msg_process_t process)
 {
-  simdata_process_t simdata;
+  MsgActorExt* msgExt;
   if (process == nullptr) {
-    simdata = (simdata_process_t) SIMIX_process_self_get_data();
+    msgExt = (MsgActorExt*)SIMIX_process_self_get_data();
   }
   else {
-    simdata = (simdata_process_t)process->data;
+    msgExt = (MsgActorExt*)process->data;
   }
-  return simdata ? simdata->m_host : nullptr;
+  return msgExt ? msgExt->m_host : nullptr;
 }
 
 /** \ingroup m_process_management
index 3bdbfe7..f6094d5 100644 (file)
@@ -133,7 +133,7 @@ void smpi_process_init(int *argc, char ***argv)
     data->instance_id = instance_id;
     data->replaying   = false;
 
-    static_cast<simdata_process_t>(proc->data)->data = data;
+    static_cast<MsgActorExt*>(proc->data)->data = data;
 
     if (*argc > 3) {
       memmove(&(*argv)[0], &(*argv)[2], sizeof(char *) * (*argc - 2));
@@ -226,8 +226,8 @@ int smpi_global_size()
 
 smpi_process_data_t smpi_process_data()
 {
-  simdata_process_t simdata = static_cast<simdata_process_t>(SIMIX_process_self()->data);
-  return static_cast<smpi_process_data_t>(simdata->data);
+  MsgActorExt* msgExt = static_cast<MsgActorExt*>(SIMIX_process_self()->data);
+  return static_cast<smpi_process_data_t>(msgExt->data);
 }
 
 smpi_process_data_t smpi_process_remote_data(int index)
@@ -400,7 +400,7 @@ void smpi_comm_copy_buffer_callback(smx_activity_t synchro, void *buff, size_t b
        XBT_DEBUG("Privatization : We are copying from a zone inside global memory... Saving data to temp buffer !");
 
        smpi_switch_data_segment(
-           (static_cast<smpi_process_data_t>((static_cast<simdata_process_t>(comm->src_proc->data)->data))->index));
+           (static_cast<smpi_process_data_t>((static_cast<MsgActorExt*>(comm->src_proc->data)->data))->index));
        tmpbuff = static_cast<void*>(xbt_malloc(buff_size));
        memcpy(tmpbuff, buff, buff_size);
   }
@@ -409,7 +409,7 @@ void smpi_comm_copy_buffer_callback(smx_activity_t synchro, void *buff, size_t b
       && ((char*)comm->dst_buff < smpi_start_data_exe + smpi_size_data_exe )){
        XBT_DEBUG("Privatization : We are copying to a zone inside global memory - Switch data segment");
        smpi_switch_data_segment(
-           (static_cast<smpi_process_data_t>((static_cast<simdata_process_t>(comm->dst_proc->data)->data))->index));
+           (static_cast<smpi_process_data_t>((static_cast<MsgActorExt*>(comm->dst_proc->data)->data))->index));
   }
 
   memcpy(comm->dst_buff, tmpbuff, buff_size);