using simgrid::mc::remote;
+#ifdef __linux__
+# define WAITPID_CHECKED_FLAGS __WALL
+#else
+# define WAITPID_CHECKED_FLAGS 0
+#endif
+
// Hardcoded index for now:
#define SOCKET_FD_INDEX 0
#define SIGNAL_FD_INDEX 1
namespace mc {
ModelChecker::ModelChecker(std::unique_ptr<Process> process) :
- hostnames_(xbt_dict_new()),
page_store_(500),
process_(std::move(process)),
parent_snapshot_(nullptr)
}
-ModelChecker::~ModelChecker()
-{
- xbt_dict_free(&this->hostnames_);
-}
-
-const char* ModelChecker::get_host_name(const char* hostname)
-{
- // Lookup the host name in the dictionary (or create it):
- xbt_dictelm_t elt = xbt_dict_get_elm_or_null(this->hostnames_, hostname);
- if (!elt) {
- xbt_dict_set(this->hostnames_, hostname, nullptr, nullptr);
- elt = xbt_dict_get_elm_or_null(this->hostnames_, hostname);
- assert(elt);
- }
- return elt->key;
-}
+ModelChecker::~ModelChecker() {}
void ModelChecker::start()
{
int status;
// The model-checked process SIGSTOP itself to signal it's ready:
- pid_t res = waitpid(pid, &status, __WALL);
+ pid_t res = waitpid(pid, &status, WAITPID_CHECKED_FLAGS);
if (res < 0 || !WIFSTOPPED(status) || WSTOPSIG(status) != SIGSTOP)
xbt_die("Could not wait model-checked process");
return true;
}
-/** Terminate the model-checker aplication */
+/** Terminate the model-checker application */
void ModelChecker::exit(int status)
{
- // TODO, terminate the model checker politely instead of exiting rudel
+ // TODO, terminate the model checker politely instead of exiting rudely
if (process().running())
kill(process().pid(), SIGKILL);
::exit(status);
if (s == -1)
xbt_die("Could not receive message");
if (s != sizeof(message) || message.type != MC_MESSAGE_DEADLOCK_CHECK_REPLY)
- xbt_die("%s received unexpected message %s (%i, size=%i) "
+ xbt_die("Received unexpected message %s (%i, size=%i) "
"expected MC_MESSAGE_DEADLOCK_CHECK_REPLY (%i, size=%i)",
- MC_mode_name(mc_mode),
MC_message_type_name(message.type), (int) message.type, (int) s,
(int) MC_MESSAGE_DEADLOCK_CHECK_REPLY, (int) sizeof(message)
);