X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/5d67901dba3dfd8e75f708c329b8144287490077..38e2adf74c9fccec6487e953bcb6895b72786dc1:/src/simix/smx_process.cpp?ds=sidebyside diff --git a/src/simix/smx_process.cpp b/src/simix/smx_process.cpp index c20273ac17..02daca1a6d 100644 --- a/src/simix/smx_process.cpp +++ b/src/simix/smx_process.cpp @@ -38,7 +38,7 @@ smx_process_t SIMIX_process_self(void) { smx_context_t self_context = SIMIX_context_self(); - return self_context ? SIMIX_context_get_process(self_context) : NULL; + return self_context ? self_context->process() : NULL; } /** @@ -644,8 +644,6 @@ void simcall_HANDLER_process_suspend(smx_simcall_t simcall, smx_process_t proces smx_synchro_t SIMIX_process_suspend(smx_process_t process, smx_process_t issuer) { - xbt_assert((process != NULL), "Invalid parameters"); - if (process->suspended) { XBT_DEBUG("Process '%s' is already suspended", process->name); return NULL; @@ -653,32 +651,14 @@ smx_synchro_t SIMIX_process_suspend(smx_process_t process, smx_process_t issuer) process->suspended = 1; - /* If we are suspending another process, and it is waiting on a sync, suspend its synchronization. */ + /* If we are suspending another process that is waiting on a sync, suspend its synchronization. */ if (process != issuer) { - if (process->waiting_synchro) { - - simgrid::simix::Exec *exec = dynamic_cast(process->waiting_synchro); - if (exec != nullptr) { - SIMIX_execution_suspend(process->waiting_synchro); - } - - simgrid::simix::Comm *comm = dynamic_cast(process->waiting_synchro); - if (comm != nullptr) { - SIMIX_comm_suspend(process->waiting_synchro); - } - - simgrid::simix::Sleep *sleep = dynamic_cast(process->waiting_synchro); - if (sleep != nullptr) { - SIMIX_process_sleep_suspend(process->waiting_synchro); - } + if (process->waiting_synchro) + process->waiting_synchro->suspend(); + /* If the other process is not waiting, its suspension is delayed to when the process is rescheduled. */ - /* The suspension of raw synchros is delayed to when the process is rescheduled. */ - return NULL; - } else { - /* If the other process is not waiting, its suspension is delayed to when the process is rescheduled. */ - return NULL; - } + return NULL; } else { /* FIXME: computation size is zero. Is it okay that bound is zero ? */ return SIMIX_execution_start(process, "suspend", 0.0, 1.0, 0.0, 0); @@ -706,24 +686,7 @@ void SIMIX_process_resume(smx_process_t process, smx_process_t issuer) if (process != issuer) { if (process->waiting_synchro) { - simgrid::simix::Exec *exec = dynamic_cast(process->waiting_synchro); - if (exec != nullptr) { - SIMIX_execution_resume(process->waiting_synchro); - } - - simgrid::simix::Comm *comm = dynamic_cast(process->waiting_synchro); - if (comm != nullptr) { - SIMIX_comm_resume(process->waiting_synchro); - } - - simgrid::simix::Sleep *sleep = dynamic_cast(process->waiting_synchro); - if (sleep != nullptr) { - SIMIX_process_sleep_resume(process->waiting_synchro); - } - - /* I cannot resume raw synchros now. This is delayed to when the process is rescheduled at - * the end of the synchro. */ - + process->waiting_synchro->resume(); } } else XBT_WARN("Strange. Process %p is trying to resume himself.", issuer); @@ -949,20 +912,6 @@ void SIMIX_process_sleep_destroy(smx_synchro_t synchro) } } -void SIMIX_process_sleep_suspend(smx_synchro_t synchro) -{ - simgrid::simix::Sleep *sleep = static_cast(synchro); - sleep->surf_sleep->suspend(); -} - -void SIMIX_process_sleep_resume(smx_synchro_t synchro) -{ - XBT_DEBUG("Synchro state is %d on process_sleep_resume.", synchro->state); - simgrid::simix::Sleep *sleep = static_cast(synchro); - - sleep->surf_sleep->resume(); -} - /** * \brief Calling this function makes the process to yield. *