From d0694c51e5ea965a0c5851c58b58af7c70a62af3 Mon Sep 17 00:00:00 2001 From: Martin Quinson Date: Mon, 19 Jun 2017 09:01:24 +0200 Subject: [PATCH 1/1] move the C++ data of MSG into a namespace --- src/msg/msg_private.h | 6 ++++-- src/msg/msg_process.cpp | 15 ++++++++------- src/smpi/smpi_global.cpp | 6 +++--- src/smpi/smpi_process.cpp | 2 +- 4 files changed, 16 insertions(+), 13 deletions(-) diff --git a/src/msg/msg_private.h b/src/msg/msg_private.h index 2a45111d2d..a62d92cc92 100644 --- a/src/msg/msg_private.h +++ b/src/msg/msg_private.h @@ -70,13 +70,15 @@ typedef struct simdata_file { /******************************* Process *************************************/ namespace simgrid { -class MsgActorExt { +namespace msg { +class ActorExt { public: - explicit MsgActorExt(void* d) : data(d) {} + explicit ActorExt(void* d) : data(d) {} msg_error_t errno_ = MSG_OK; /* the last value returned by a MSG_function */ void* data = nullptr; /* user data */ }; } +} typedef struct msg_comm { smx_activity_t s_comm; /* SIMIX communication object encapsulated (the same for both processes) */ diff --git a/src/msg/msg_process.cpp b/src/msg/msg_process.cpp index eda8149313..091650ec02 100644 --- a/src/msg/msg_process.cpp +++ b/src/msg/msg_process.cpp @@ -27,15 +27,15 @@ SG_BEGIN_DECL() */ void MSG_process_cleanup_from_SIMIX(smx_actor_t smx_actor) { - simgrid::MsgActorExt* msg_actor; + simgrid::msg::ActorExt* msg_actor; // get the MSG process from the SIMIX process if (smx_actor == SIMIX_process_self()) { /* avoid a SIMIX request if this function is called by the process itself */ - msg_actor = (simgrid::MsgActorExt*)SIMIX_process_self_get_data(); + msg_actor = (simgrid::msg::ActorExt*)SIMIX_process_self_get_data(); SIMIX_process_self_set_data(nullptr); } else { - msg_actor = (simgrid::MsgActorExt*)smx_actor->data; + msg_actor = (simgrid::msg::ActorExt*)smx_actor->data; simcall_process_set_data(smx_actor, nullptr); } @@ -136,7 +136,7 @@ msg_process_t MSG_process_create_from_stdfunc(const char* name, std::functioncname(), properties, nullptr); + smx_actor_t process = + SIMIX_process_attach(name, new simgrid::msg::ActorExt(data), host->cname(), properties, nullptr); if (not process) xbt_die("Could not attach"); simcall_process_on_exit(process,(int_f_pvoid_pvoid_t)TRACE_msg_process_kill,process); @@ -231,7 +232,7 @@ 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 */ - simgrid::MsgActorExt* msgExt = (simgrid::MsgActorExt*)process->getImpl()->data; + simgrid::msg::ActorExt* msgExt = (simgrid::msg::ActorExt*)process->getImpl()->data; if (msgExt) return msgExt->data; else @@ -247,7 +248,7 @@ 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!"); - static_cast(process->getImpl()->data)->data = data; + static_cast(process->getImpl()->data)->data = data; return MSG_OK; } diff --git a/src/smpi/smpi_global.cpp b/src/smpi/smpi_global.cpp index 66a8f26d7a..b7a827cd73 100644 --- a/src/smpi/smpi_global.cpp +++ b/src/smpi/smpi_global.cpp @@ -79,7 +79,7 @@ simgrid::smpi::Process* smpi_process() smx_actor_t me = SIMIX_process_self(); if (me == nullptr) // This happens sometimes (eg, when linking against NS3 because it pulls openMPI...) return nullptr; - simgrid::MsgActorExt* msgExt = static_cast(me->data); + simgrid::msg::ActorExt* msgExt = static_cast(me->data); return static_cast(msgExt->data); } @@ -180,7 +180,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((static_cast(comm->src_proc->data)->data)) + static_cast((static_cast(comm->src_proc->data)->data)) ->index()); tmpbuff = static_cast(xbt_malloc(buff_size)); memcpy_private(tmpbuff, buff, private_blocks); @@ -190,7 +190,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((static_cast(comm->dst_proc->data)->data)) + static_cast((static_cast(comm->dst_proc->data)->data)) ->index()); } XBT_DEBUG("Copying %zu bytes from %p to %p", buff_size, tmpbuff,comm->dst_buff); diff --git a/src/smpi/smpi_process.cpp b/src/smpi/smpi_process.cpp index b6bc56aa45..41dd614fb7 100644 --- a/src/smpi/smpi_process.cpp +++ b/src/smpi/smpi_process.cpp @@ -76,7 +76,7 @@ void Process::set_data(int index, int* argc, char*** argv) instance_id_ = instance_id; index_ = index; - static_cast(SIMIX_process_self()->data)->data = this; + static_cast(SIMIX_process_self()->data)->data = this; if (*argc > 3) { memmove(&(*argv)[0], &(*argv)[2], sizeof(char *) * (*argc - 2)); -- 2.20.1