Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[mc] Move resolve_process...() as methods of Process
[simgrid.git] / src / mc / mc_smx.cpp
index 6913890..604cdc3 100644 (file)
@@ -40,10 +40,10 @@ simgrid::mc::SimixProcessInformation* MC_smx_process_get_info(smx_process_t p)
   return process_info;
 }
 
-/** Load the remote swag of processes into a dynar
+/** Load the remote swag of processes into a vector
  *
  *  @param process     MCed process
- *  @param target      Local dynar (to be filled with copies of `s_smx_process_t`)
+ *  @param target      Local vector (to be filled with copies of `s_smx_process_t`)
  *  @param remote_swag Address of the process SWAG in the remote list
  */
 static void MC_process_refresh_simix_process_list(
@@ -56,7 +56,7 @@ static void MC_process_refresh_simix_process_list(
   s_xbt_swag_t swag;
   process->read_bytes(&swag, sizeof(swag), remote(remote_swag));
 
-  // Load each element of the dynar from the MCed process:
+  // Load each element of the vector from the MCed process:
   int i = 0;
   for (smx_process_t p = (smx_process_t) swag.head; p; ++i) {
 
@@ -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,33 +129,6 @@ 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)
-{
-  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);
-  if (process_info)
-    return &process_info->copy;
-  else
-    return nullptr;
-}
-
-simgrid::mc::SimixProcessInformation* MC_smx_resolve_process_info(smx_process_t process_remote_address)
-{
-  if (mc_mode == MC_MODE_CLIENT)
-    xbt_die("No process_info for local process is not enabled.");
-  for (auto& process_info : mc_model_checker->process().smx_process_infos)
-    if (process_info.address == process_remote_address)
-      return &process_info;
-  for (auto& process_info : mc_model_checker->process().smx_old_process_infos)
-    if (process_info.address == process_remote_address)
-      return &process_info;
-  xbt_die("Process info not found");
-}
-
 const char* MC_smx_process_get_host_name(smx_process_t p)
 {
   if (mc_mode == MC_MODE_CLIENT)
@@ -164,7 +136,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