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
fix (#220) ?
[simgrid.git]
/
src
/
mc
/
mc_base.cpp
diff --git
a/src/mc/mc_base.cpp
b/src/mc/mc_base.cpp
index
eebd47b
..
83a39e4
100644
(file)
--- a/
src/mc/mc_base.cpp
+++ b/
src/mc/mc_base.cpp
@@
-1,17
+1,21
@@
-/* Copyright (c) 2008-201
7
. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2008-201
9
. The SimGrid Team. All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
-#include <simgrid_config.h>
-
-#include "mc/mc.h"
#include "src/mc/mc_base.h"
#include "src/mc/mc_base.h"
-#include "src/mc/mc_replay.h"
+#include "mc/mc.h"
+#include "simgrid/config.h"
+#include "src/kernel/activity/CommImpl.hpp"
+#include "src/kernel/activity/MutexImpl.hpp"
+#include "src/mc/mc_config.hpp"
+#include "src/mc/mc_forward.hpp"
+#include "src/mc/mc_replay.hpp"
#include "src/simix/smx_private.hpp"
#if SIMGRID_HAVE_MC
#include "src/mc/ModelChecker.hpp"
#include "src/simix/smx_private.hpp"
#if SIMGRID_HAVE_MC
#include "src/mc/ModelChecker.hpp"
+#include "src/mc/remote/RemoteClient.hpp"
using simgrid::mc::remote;
#endif
using simgrid::mc::remote;
#endif
@@
-35,9
+39,9
@@
void wait_for_requests()
#if SIMGRID_HAVE_MC
xbt_assert(mc_model_checker == nullptr, "This must be called from the client");
#endif
#if SIMGRID_HAVE_MC
xbt_assert(mc_model_checker == nullptr, "This must be called from the client");
#endif
- while (not simix_global->
proces
s_to_run.empty()) {
-
SIMIX_process_runall
();
- for (smx_actor_t const& process : simix_global->
proces
s_that_ran) {
+ while (not simix_global->
actor
s_to_run.empty()) {
+
simix_global->run_all_actors
();
+ for (smx_actor_t const& process : simix_global->
actor
s_that_ran) {
smx_simcall_t req = &process->simcall;
if (req->call != SIMCALL_NONE && not simgrid::mc::request_is_visible(req))
SIMIX_simcall_handle(req, 0);
smx_simcall_t req = &process->simcall;
if (req->call != SIMCALL_NONE && not simgrid::mc::request_is_visible(req))
SIMIX_simcall_handle(req, 0);
@@
-68,7
+72,7
@@
bool actor_is_enabled(smx_actor_t actor)
#if SIMGRID_HAVE_MC
// If in the MCer, ask the client app since it has all the data
if (mc_model_checker != nullptr) {
#if SIMGRID_HAVE_MC
// If in the MCer, ask the client app since it has all the data
if (mc_model_checker != nullptr) {
- return mc_model_checker->process().actor_is_enabled(actor->
pid
);
+ return mc_model_checker->process().actor_is_enabled(actor->
get_pid()
);
}
#endif
}
#endif
@@
-84,23
+88,25
@@
bool actor_is_enabled(smx_actor_t actor)
simgrid::kernel::activity::CommImpl* act =
static_cast<simgrid::kernel::activity::CommImpl*>(simcall_comm_wait__getraw__comm(req));
simgrid::kernel::activity::CommImpl* act =
static_cast<simgrid::kernel::activity::CommImpl*>(simcall_comm_wait__getraw__comm(req));
- if (act->src_timeout
|| act->dst_timeout
) {
+ if (act->src_timeout
_ || act->dst_timeout_
) {
/* If it has a timeout it will be always be enabled (regardless of who declared the timeout),
* because even if the communication is not ready, it can timeout and won't block. */
if (_sg_mc_timeout == 1)
return true;
}
/* On the other hand if it hasn't a timeout, check if the comm is ready.*/
/* If it has a timeout it will be always be enabled (regardless of who declared the timeout),
* because even if the communication is not ready, it can timeout and won't block. */
if (_sg_mc_timeout == 1)
return true;
}
/* On the other hand if it hasn't a timeout, check if the comm is ready.*/
- else if (act->detached && act->src_proc == nullptr && act->type == SIMIX_COMM_READY)
- return (act->dst_proc != nullptr);
- return (act->src_proc && act->dst_proc);
+ else if (act->detached && act->src_actor_ == nullptr &&
+ act->type == simgrid::kernel::activity::CommImpl::Type::READY)
+ return (act->dst_actor_ != nullptr);
+ return (act->src_actor_ && act->dst_actor_);
}
case SIMCALL_COMM_WAITANY: {
}
case SIMCALL_COMM_WAITANY: {
- xbt_dynar_t comms = simcall_comm_waitany__get__comms(req);
- for (unsigned int index = 0; index < comms->used; ++index) {
- simgrid::kernel::activity::CommImpl* act = xbt_dynar_get_as(comms, index, simgrid::kernel::activity::CommImpl*);
- if (act->src_proc && act->dst_proc)
+ simgrid::kernel::activity::CommImpl** comms = simcall_comm_waitany__get__comms(req);
+ size_t count = simcall_comm_waitany__get__count(req);
+ for (unsigned int index = 0; index < count; ++index) {
+ auto* comm = comms[index];
+ if (comm->src_actor_ && comm->dst_actor_)
return true;
}
return false;
return true;
}
return false;
@@
-111,7
+117,7
@@
bool actor_is_enabled(smx_actor_t actor)
if (mutex->owner == nullptr)
return true;
if (mutex->owner == nullptr)
return true;
- return mutex->owner->
pid == req->issuer->pid
;
+ return mutex->owner->
get_pid() == req->issuer->get_pid()
;
}
case SIMCALL_SEM_ACQUIRE: {
}
case SIMCALL_SEM_ACQUIRE: {