A
lgorithmique
N
umérique
D
istribuée
Public GIT Repository
projects
/
simgrid.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
| inline |
side by side
sort Context files
[simgrid.git]
/
src
/
simix
/
smx_process.cpp
diff --git
a/src/simix/smx_process.cpp
b/src/simix/smx_process.cpp
index
c20273a
..
82b4d16
100644
(file)
--- 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;
}
/**
@@
-81,10
+81,10
@@
void SIMIX_process_cleanup(smx_process_t process)
comm->src_proc = NULL;
/* I'm not supposed to destroy a detached comm from the sender side, */
- if (
!
comm->detached)
-
SIMIX_comm_destroy(comm
);
+ if (comm->detached)
+
XBT_DEBUG("Don't destroy it since it's a detached comm and I'm the sender"
);
else
-
XBT_DEBUG("Don't destroy it since it's a detached comm"
);
+
SIMIX_comm_destroy(comm
);
}
else if (comm->dst_proc == process){
@@
-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 i
t is waiting on a sync, suspend its synchronization. */
+ /* If we are suspending another process
tha
t is waiting on a sync, suspend its synchronization. */
if (process != issuer) {
- if (process->waiting_synchro) {
-
- simgrid::simix::Exec *exec = dynamic_cast<simgrid::simix::Exec*>(process->waiting_synchro);
- if (exec != nullptr) {
- SIMIX_execution_suspend(process->waiting_synchro);
- }
-
- simgrid::simix::Comm *comm = dynamic_cast<simgrid::simix::Comm*>(process->waiting_synchro);
- if (comm != nullptr) {
- SIMIX_comm_suspend(process->waiting_synchro);
- }
-
- simgrid::simix::Sleep *sleep = dynamic_cast<simgrid::simix::Sleep*>(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<simgrid::simix::Exec*>(process->waiting_synchro);
- if (exec != nullptr) {
- SIMIX_execution_resume(process->waiting_synchro);
- }
-
- simgrid::simix::Comm *comm = dynamic_cast<simgrid::simix::Comm*>(process->waiting_synchro);
- if (comm != nullptr) {
- SIMIX_comm_resume(process->waiting_synchro);
- }
-
- simgrid::simix::Sleep *sleep = dynamic_cast<simgrid::simix::Sleep*>(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<simgrid::simix::Sleep*>(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<simgrid::simix::Sleep*>(synchro);
-
- sleep->surf_sleep->resume();
-}
-
/**
* \brief Calling this function makes the process to yield.
*