Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[mc] Remove useless MC_MODE_CLIENT paths
[simgrid.git] / src / mc / mc_smx.cpp
index b904885..9487799 100644 (file)
@@ -111,13 +111,12 @@ void Process::refresh_simix()
  *  @param process the MCed process
  *  @param req     the simcall (copied in the local process)
  */
-smx_process_t MC_smx_simcall_get_issuer(smx_simcall_t req)
+smx_process_t MC_smx_simcall_get_issuer(s_smx_simcall_t const* req)
 {
-  if (mc_mode == MC_MODE_CLIENT)
-    return req->issuer;
+  xbt_assert(mc_mode == MC_MODE_SERVER);
 
   // This is the address of the smx_process in the MCed process:
-  void* address = req->issuer;
+  auto address = simgrid::mc::remote(req->issuer);
 
   // Lookup by address:
   for (auto& p : mc_model_checker->process().simix_processes())
@@ -130,24 +129,27 @@ smx_process_t MC_smx_simcall_get_issuer(smx_simcall_t req)
   xbt_die("Issuer not found");
 }
 
-smx_process_t MC_smx_resolve_process(smx_process_t process_remote_address)
+smx_process_t MC_smx_resolve_process(
+  simgrid::mc::RemotePtr<s_smx_process_t> process_remote_address)
 {
+  xbt_assert(mc_mode == MC_MODE_SERVER);
+
   if (!process_remote_address)
     return nullptr;
-  if (mc_mode == MC_MODE_CLIENT)
-    return process_remote_address;
 
-  simgrid::mc::SimixProcessInformation* process_info = MC_smx_resolve_process_info(process_remote_address);
+  simgrid::mc::SimixProcessInformation* process_info =
+    MC_smx_resolve_process_info(process_remote_address);
   if (process_info)
     return &process_info->copy;
   else
     return nullptr;
 }
 
-simgrid::mc::SimixProcessInformation* MC_smx_resolve_process_info(smx_process_t process_remote_address)
+simgrid::mc::SimixProcessInformation* MC_smx_resolve_process_info(
+  simgrid::mc::RemotePtr<s_smx_process_t> process_remote_address)
 {
-  if (mc_mode == MC_MODE_CLIENT)
-    xbt_die("No process_info for local process is not enabled.");
+  xbt_assert(mc_mode == MC_MODE_SERVER);
+
   for (auto& process_info : mc_model_checker->process().smx_process_infos)
     if (process_info.address == process_remote_address)
       return &process_info;
@@ -164,7 +166,7 @@ const char* MC_smx_process_get_host_name(smx_process_t p)
 
   simgrid::mc::Process* process = &mc_model_checker->process();
 
-  /* Horrible hack to find the offset of the id in the simgrid::s4u::Host.
+  /* HACK, Horrible hack to find the offset of the id in the simgrid::s4u::Host.
 
      Offsetof is not supported for non-POD types but this should
      work in pratice for the targets currently supported by the MC