Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
model-checker : add ignore mechanism for global variables (data + bss segments) in...
[simgrid.git] / src / simix / smx_process.c
index d6aa7da..ad38a71 100644 (file)
@@ -318,7 +318,7 @@ void SIMIX_process_kill(smx_process_t process, smx_process_t issuer) {
 
       case SIMIX_ACTION_COMMUNICATE:
         xbt_fifo_remove(process->comms, process->waiting_action);
-        SIMIX_comm_destroy(process->waiting_action);
+        SIMIX_comm_cancel(process->waiting_action);
         break;
 
         case SIMIX_ACTION_SLEEP:
@@ -333,6 +333,14 @@ void SIMIX_process_kill(smx_process_t process, smx_process_t issuer) {
         case SIMIX_ACTION_IO:
           SIMIX_io_destroy(process->waiting_action);
           break;
+
+        /* **************************************/
+        /* TUTORIAL: New API                    */
+        case SIMIX_ACTION_NEW_API:
+          SIMIX_new_api_destroy(process->waiting_action);
+          break;
+        /* **************************************/
+
     }
   }
   if(!xbt_dynar_member(simix_global->process_to_run, &(process)) && process != issuer) {
@@ -571,7 +579,7 @@ xbt_dict_t SIMIX_process_get_properties(smx_process_t process)
 
 void SIMIX_pre_process_sleep(smx_simcall_t simcall)
 {
-  if (MC_IS_ENABLED) {
+  if (MC_is_active()) {
     MC_process_clock_add(simcall->issuer, simcall->process_sleep.duration);
     simcall->process_sleep.result = SIMIX_DONE;
     SIMIX_simcall_answer(simcall);
@@ -701,6 +709,13 @@ void SIMIX_process_yield(smx_process_t self)
     self->doexception = 0;
     SMX_THROW();
   }
+
+  /* Ignore some local variables from xbt/ex.c for stacks comparison */
+  if(MC_is_active()){
+    MC_ignore_stack("ctx", "SIMIX_process_yield");
+    MC_ignore_stack("_throw_ctx", "SIMIX_process_yield");
+    MC_ignore_stack("_log_ev", "SIMIX_process_yield");
+  }
 }
 
 /* callback: context fetching */
@@ -713,7 +728,7 @@ xbt_running_ctx_t *SIMIX_process_get_running_context(void)
 void SIMIX_process_exception_terminate(xbt_ex_t * e)
 {
   xbt_ex_display(e);
-  abort();
+  xbt_abort();
 }
 
 smx_context_t SIMIX_process_get_context(smx_process_t p) {
@@ -786,7 +801,7 @@ void SIMIX_process_auto_restart_set(smx_process_t process, int auto_restart) {
  * \brief Restart a process.
  * Restart a process, starting it again from the beginning.
  */
-void SIMIX_process_restart(smx_process_t process, smx_process_t issuer) {
+smx_process_t SIMIX_process_restart(smx_process_t process, smx_process_t issuer) {
   XBT_DEBUG("Restarting process %s on %s", process->name, process->smx_host->name);
   //retrieve the arguments of the old process
   //FIXME: Factorise this with SIMIX_host_add_auto_restart_process ?
@@ -833,5 +848,5 @@ void SIMIX_process_restart(smx_process_t process, smx_process_t issuer) {
                                           arg.auto_restart);
 
   }
-
+  return new_process;
 }