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
Start moving classes into the mc/api directory
[simgrid.git]
/
src
/
mc
/
Session.cpp
diff --git
a/src/mc/Session.cpp
b/src/mc/Session.cpp
index 0bd6e82d9a67d335e5c302b3b007698c8d4376c5..02cb8a754d09c61f446b364b3519ab34b5fe7e06 100644
(file)
--- a/
src/mc/Session.cpp
+++ b/
src/mc/Session.cpp
@@
-1,4
+1,4
@@
-/* Copyright (c) 2015-202
1
. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2015-202
2
. 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. */
@@
-9,12
+9,14
@@
#include "src/internal_config.h" // HAVE_SMPI
#if HAVE_SMPI
#include "smpi/smpi.h"
#include "src/internal_config.h" // HAVE_SMPI
#if HAVE_SMPI
#include "smpi/smpi.h"
+#include "src/smpi/include/private.hpp"
#endif
#endif
+#include "src/mc/api/State.hpp"
#include "src/mc/mc_private.hpp"
#include "src/mc/mc_private.hpp"
-#include "src/mc/mc_state.hpp"
#include "xbt/log.h"
#include "xbt/system_error.hpp"
#include "xbt/log.h"
#include "xbt/system_error.hpp"
+#include "signal.h"
#include <array>
#include <memory>
#include <string>
#include <array>
#include <memory>
#include <string>
@@
-69,8
+71,7
@@
Session::Session(const std::function<void()>& code)
// between the model-checker process (ourselves) and the model-checked
// process:
int sockets[2];
// between the model-checker process (ourselves) and the model-checked
// process:
int sockets[2];
- int res = socketpair(AF_LOCAL, SOCK_SEQPACKET | SOCK_CLOEXEC, 0, sockets);
- xbt_assert(res != -1, "Could not create socketpair");
+ xbt_assert(socketpair(AF_LOCAL, SOCK_SEQPACKET | SOCK_CLOEXEC, 0, sockets) != -1, "Could not create socketpair");
pid_t pid = fork();
xbt_assert(pid >= 0, "Could not fork model-checked process");
pid_t pid = fork();
xbt_assert(pid >= 0, "Could not fork model-checked process");
@@
-98,20
+99,14
@@
Session::~Session()
this->close();
}
this->close();
}
-/** T
ake the initial snapshot of the application, that
must be stopped. */
-void Session::
initialize
()
+/** T
he application
must be stopped. */
+void Session::
take_initial_snapshot
()
{
xbt_assert(initial_snapshot_ == nullptr);
model_checker_->wait_for_requests();
initial_snapshot_ = std::make_shared<simgrid::mc::Snapshot>(0);
}
{
xbt_assert(initial_snapshot_ == nullptr);
model_checker_->wait_for_requests();
initial_snapshot_ = std::make_shared<simgrid::mc::Snapshot>(0);
}
-void Session::execute(Transition const& transition) const
-{
- model_checker_->handle_simcall(transition);
- model_checker_->wait_for_requests();
-}
-
void Session::restore_initial_state() const
{
this->initial_snapshot_->restore(&model_checker_->get_remote_process());
void Session::restore_initial_state() const
{
this->initial_snapshot_->restore(&model_checker_->get_remote_process());
@@
-144,7
+139,8
@@
void Session::close()
bool Session::actor_is_enabled(aid_t pid) const
{
bool Session::actor_is_enabled(aid_t pid) const
{
- s_mc_message_actor_enabled_t msg{};
+ s_mc_message_actor_enabled_t msg;
+ memset(&msg, 0, sizeof msg);
msg.type = simgrid::mc::MessageType::ACTOR_ENABLED;
msg.aid = pid;
model_checker_->channel().send(msg);
msg.type = simgrid::mc::MessageType::ACTOR_ENABLED;
msg.aid = pid;
model_checker_->channel().send(msg);
@@
-154,7
+150,6
@@
bool Session::actor_is_enabled(aid_t pid) const
return ((s_mc_message_int_t*)buff.data())->value;
}
return ((s_mc_message_int_t*)buff.data())->value;
}
-simgrid::mc::Session* session;
-
+simgrid::mc::Session* session_singleton;
}
}
}
}