Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[mc] Add more smx_process_t MCer/MCed translations
authorGabriel Corona <gabriel.corona@loria.fr>
Tue, 10 Mar 2015 10:10:52 +0000 (11:10 +0100)
committerGabriel Corona <gabriel.corona@loria.fr>
Tue, 10 Mar 2015 10:57:52 +0000 (11:57 +0100)
src/mc/mc_comm_determinism.c
src/mc/mc_process.c
src/mc/mc_request.c

index bba97ce..4043b1f 100644 (file)
@@ -171,11 +171,13 @@ static void update_comm_pattern(mc_comm_pattern_t comm_pattern, smx_synchro_t co
 {
   mc_process_t process = &mc_model_checker->process;
   void *addr_pointed;
-  comm_pattern->src_proc = comm->comm.src_proc->pid;
-  comm_pattern->dst_proc = comm->comm.dst_proc->pid;
+  smx_process_t src_proc = MC_smx_resolve_process(comm->comm.src_proc);
+  smx_process_t dst_proc = MC_smx_resolve_process(comm->comm.dst_proc);
+  comm_pattern->src_proc = src_proc->pid;
+  comm_pattern->dst_proc = dst_proc->pid;
   // TODO, resolve host name
-  comm_pattern->src_host = MC_smx_process_get_host_name(MC_smx_resolve_process(comm->comm.src_proc));
-  comm_pattern->dst_host = MC_smx_process_get_host_name(MC_smx_resolve_process(comm->comm.dst_proc));
+  comm_pattern->src_host = MC_smx_process_get_host_name(src_proc);
+  comm_pattern->dst_host = MC_smx_process_get_host_name(dst_proc);
   if (comm_pattern->data_size == -1 && comm->comm.src_buff != NULL) {
     comm_pattern->data_size = *(comm->comm.dst_buff_size);
     comm_pattern->data = xbt_malloc0(comm_pattern->data_size);
@@ -243,8 +245,7 @@ void get_comm_pattern(const xbt_dynar_t list, const smx_simcall_t request, const
     pattern->comm = simcall_comm_isend__get__result(request);
     // FIXME, remote access to rdv->name
     pattern->rdv = (pattern->comm->comm.rdv != NULL) ? strdup(pattern->comm->comm.rdv->name) : strdup(pattern->comm->comm.rdv_cpy->name);
-    pattern->src_proc = pattern->comm->comm.src_proc->pid;
-    // FIXME, get remote host name
+    pattern->src_proc = MC_smx_resolve_process(pattern->comm->comm.src_proc)->pid;
     pattern->src_host = MC_smx_process_get_host_name(issuer);
     if(pattern->comm->comm.src_buff != NULL){
       pattern->data_size = pattern->comm->comm.src_buff_size;
@@ -259,8 +260,9 @@ void get_comm_pattern(const xbt_dynar_t list, const smx_simcall_t request, const
   } else if (call_type == MC_CALL_TYPE_RECV) {                      
     pattern->type = SIMIX_COMM_RECEIVE;
     pattern->comm = simcall_comm_irecv__get__result(request);
+    // TODO, remote access
     pattern->rdv = (pattern->comm->comm.rdv != NULL) ? strdup(pattern->comm->comm.rdv->name) : strdup(pattern->comm->comm.rdv_cpy->name);
-    pattern->dst_proc = pattern->comm->comm.dst_proc->pid;
+    pattern->dst_proc = MC_smx_resolve_process(pattern->comm->comm.dst_proc)->pid;
     // FIXME, remote process access
     pattern->dst_host = MC_smx_process_get_host_name(issuer);
   } else {
@@ -273,11 +275,14 @@ void get_comm_pattern(const xbt_dynar_t list, const smx_simcall_t request, const
 }
 
 void complete_comm_pattern(xbt_dynar_t list, smx_synchro_t comm, int backtracking) {
-
   mc_comm_pattern_t current_comm_pattern;
   unsigned int cursor = 0;
-  unsigned int src = comm->comm.src_proc->pid;
-  unsigned int dst = comm->comm.dst_proc->pid;
+
+  smx_process_t src_proc = MC_smx_resolve_process(comm->comm.src_proc);
+  smx_process_t dst_proc = MC_smx_resolve_process(comm->comm.dst_proc);
+  unsigned int src = src_proc->pid;
+  unsigned int dst = dst_proc->pid;
+
   mc_comm_pattern_t src_comm_pattern;
   mc_comm_pattern_t dst_comm_pattern;
   int src_completed = 0, dst_completed = 0;
index bf29cbb..e3f4eb8 100644 (file)
@@ -59,7 +59,7 @@ void MC_process_init(mc_process_t process, pid_t pid, int sockfd)
   process->process_flags = MC_PROCESS_NO_FLAG;
   process->socket = sockfd;
   process->pid = pid;
-  if (0 && pid==getpid())
+  if (pid==getpid())
     process->process_flags |= MC_PROCESS_SELF_FLAG;
   process->running = true;
   process->status = 0;
index 9e5dcdb..1b12665 100644 (file)
@@ -472,17 +472,20 @@ char *MC_request_get_dot_output(smx_simcall_t req, int value)
       else
         label = bprintf("[(%lu)] WaitTimeout", issuer->pid);
     } else {
+      // FIXME, remote access to act->comm
+      smx_process_t src_proc = MC_smx_resolve_process(act->comm.src_proc);
+      smx_process_t dst_proc = MC_smx_resolve_process(act->comm.dst_proc);
       if (issuer->smx_host)
         label =
             bprintf("[(%lu)%s] Wait [(%lu)->(%lu)]", issuer->pid,
                     MC_smx_process_get_host_name(issuer),
-                    act->comm.src_proc ? act->comm.src_proc->pid : 0,
-                    act->comm.dst_proc ? act->comm.dst_proc->pid : 0);
+                    src_proc ? src_proc->pid : 0,
+                    dst_proc ? dst_proc->pid : 0);
       else
         label =
             bprintf("[(%lu)] Wait [(%lu)->(%lu)]", issuer->pid,
-                    act->comm.src_proc ? act->comm.src_proc->pid : 0,
-                    act->comm.dst_proc ? act->comm.dst_proc->pid : 0);
+                    src_proc ? src_proc->pid : 0,
+                    dst_proc ? dst_proc->pid : 0);
     }
     break;