X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/eb08fb3c624342be6f198555c0ebb0d847c65d65..d78a7f87e28a15c0f1e71e4510a055554e0e5e9b:/src/simix/popping_generated.cpp diff --git a/src/simix/popping_generated.cpp b/src/simix/popping_generated.cpp index df1deab123..8f47b97cd5 100644 --- a/src/simix/popping_generated.cpp +++ b/src/simix/popping_generated.cpp @@ -4,7 +4,7 @@ /* DO NOT EVER CHANGE THIS FILE */ /* */ /* change simcalls specification in src/simix/simcalls.in */ -/* Copyright (c) 2014-2019. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2014-2021. The SimGrid Team. All rights reserved. */ /**********************************************************************/ /* @@ -15,149 +15,115 @@ */ #include "smx_private.hpp" +#include #include #if SIMGRID_HAVE_MC #include "src/mc/mc_forward.hpp" #endif #include "src/kernel/activity/ConditionVariableImpl.hpp" +#include "src/mc/checker/SimcallObserver.hpp" XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(simix_popping); +using simgrid::simix::Simcall; /** @brief Simcalls' names (generated from src/simix/simcalls.in) */ -const char* simcall_names[] = { - "SIMCALL_NONE", - "SIMCALL_EXECUTION_WAIT", - "SIMCALL_EXECUTION_WAITANY_FOR", - "SIMCALL_EXECUTION_TEST", - "SIMCALL_COMM_SEND", - "SIMCALL_COMM_ISEND", - "SIMCALL_COMM_RECV", - "SIMCALL_COMM_IRECV", - "SIMCALL_COMM_WAITANY", - "SIMCALL_COMM_WAIT", - "SIMCALL_COMM_TEST", - "SIMCALL_COMM_TESTANY", - "SIMCALL_MUTEX_LOCK", - "SIMCALL_MUTEX_TRYLOCK", - "SIMCALL_MUTEX_UNLOCK", - "SIMCALL_COND_WAIT", - "SIMCALL_COND_WAIT_TIMEOUT", - "SIMCALL_SEM_ACQUIRE", - "SIMCALL_SEM_ACQUIRE_TIMEOUT", - "SIMCALL_IO_WAIT", - "SIMCALL_MC_RANDOM", - "SIMCALL_RUN_KERNEL", - "SIMCALL_RUN_BLOCKING", -}; +constexpr std::array simcall_names{{ + "Simcall::NONE", + "Simcall::EXECUTION_WAITANY_FOR", + "Simcall::COMM_SEND", + "Simcall::COMM_ISEND", + "Simcall::COMM_RECV", + "Simcall::COMM_IRECV", + "Simcall::COMM_WAITANY", + "Simcall::COMM_WAIT", + "Simcall::COMM_TEST", + "Simcall::COMM_TESTANY", + "Simcall::COND_WAIT", + "Simcall::COND_WAIT_TIMEOUT", + "Simcall::SEM_ACQUIRE", + "Simcall::SEM_ACQUIRE_TIMEOUT", + "Simcall::RUN_KERNEL", + "Simcall::RUN_BLOCKING", +}}; /** @private * @brief (in kernel mode) unpack the simcall and activate the handler * * This function is generated from src/simix/simcalls.in */ -void simgrid::kernel::actor::ActorImpl::simcall_handle(int value) { - XBT_DEBUG("Handling simcall %p: %s", &simcall, SIMIX_simcall_name(simcall.call_)); - SIMCALL_SET_MC_VALUE(simcall, value); - if (context_->iwannadie) +void simgrid::kernel::actor::ActorImpl::simcall_handle(int times_considered_) +{ + XBT_DEBUG("Handling simcall %p: %s", &simcall_, SIMIX_simcall_name(simcall_.call_)); + simcall_.mc_value_ = times_considered_; + if (simcall_.observer_ != nullptr) + simcall_.observer_->prepare(times_considered_); + if (context_->wannadie()) return; - switch (simcall.call_) { - case SIMCALL_EXECUTION_WAIT: - simcall_HANDLER_execution_wait(&simcall, simgrid::simix::unmarshal(simcall.args_[0]), simgrid::simix::unmarshal(simcall.args_[1])); + switch (simcall_.call_) { + case Simcall::EXECUTION_WAITANY_FOR: + simcall_HANDLER_execution_waitany_for(&simcall_, simgrid::simix::unmarshal(simcall_.args_[0]), simgrid::simix::unmarshal(simcall_.args_[1]), simgrid::simix::unmarshal(simcall_.args_[2])); break; - case SIMCALL_EXECUTION_WAITANY_FOR: - simcall_HANDLER_execution_waitany_for(&simcall, simgrid::simix::unmarshal(simcall.args_[0]), simgrid::simix::unmarshal(simcall.args_[1]), simgrid::simix::unmarshal(simcall.args_[2])); + case Simcall::COMM_SEND: + simcall_HANDLER_comm_send(&simcall_, simgrid::simix::unmarshal(simcall_.args_[0]), simgrid::simix::unmarshal(simcall_.args_[1]), simgrid::simix::unmarshal(simcall_.args_[2]), simgrid::simix::unmarshal(simcall_.args_[3]), simgrid::simix::unmarshal(simcall_.args_[4]), simgrid::simix::unmarshal(simcall_.args_[5]), simgrid::simix::unmarshal(simcall_.args_[6]), simgrid::simix::unmarshal(simcall_.args_[7]), simgrid::simix::unmarshal(simcall_.args_[8]), simgrid::simix::unmarshal(simcall_.args_[9])); break; - case SIMCALL_EXECUTION_TEST: - simcall_HANDLER_execution_test(&simcall, simgrid::simix::unmarshal(simcall.args_[0])); - break; - - case SIMCALL_COMM_SEND: - simcall_HANDLER_comm_send(&simcall, simgrid::simix::unmarshal(simcall.args_[0]), simgrid::simix::unmarshal(simcall.args_[1]), simgrid::simix::unmarshal(simcall.args_[2]), simgrid::simix::unmarshal(simcall.args_[3]), simgrid::simix::unmarshal(simcall.args_[4]), simgrid::simix::unmarshal(simcall.args_[5]), simgrid::simix::unmarshal(simcall.args_[6]), simgrid::simix::unmarshal(simcall.args_[7]), simgrid::simix::unmarshal(simcall.args_[8]), simgrid::simix::unmarshal(simcall.args_[9])); - break; - - case SIMCALL_COMM_ISEND: - simgrid::simix::marshal>(simcall.result_, simcall_HANDLER_comm_isend(&simcall, simgrid::simix::unmarshal(simcall.args_[0]), simgrid::simix::unmarshal(simcall.args_[1]), simgrid::simix::unmarshal(simcall.args_[2]), simgrid::simix::unmarshal(simcall.args_[3]), simgrid::simix::unmarshal(simcall.args_[4]), simgrid::simix::unmarshal(simcall.args_[5]), simgrid::simix::unmarshal(simcall.args_[6]), simgrid::simix::unmarshal(simcall.args_[7]), simgrid::simix::unmarshal(simcall.args_[8]), simgrid::simix::unmarshal(simcall.args_[9]), simgrid::simix::unmarshal(simcall.args_[10]))); + case Simcall::COMM_ISEND: + simgrid::simix::marshal>(simcall_.result_, simcall_HANDLER_comm_isend(&simcall_, simgrid::simix::unmarshal(simcall_.args_[0]), simgrid::simix::unmarshal(simcall_.args_[1]), simgrid::simix::unmarshal(simcall_.args_[2]), simgrid::simix::unmarshal(simcall_.args_[3]), simgrid::simix::unmarshal(simcall_.args_[4]), simgrid::simix::unmarshal(simcall_.args_[5]), simgrid::simix::unmarshal(simcall_.args_[6]), simgrid::simix::unmarshal(simcall_.args_[7]), simgrid::simix::unmarshal(simcall_.args_[8]), simgrid::simix::unmarshal(simcall_.args_[9]), simgrid::simix::unmarshal(simcall_.args_[10]))); simcall_answer(); break; - case SIMCALL_COMM_RECV: - simcall_HANDLER_comm_recv(&simcall, simgrid::simix::unmarshal(simcall.args_[0]), simgrid::simix::unmarshal(simcall.args_[1]), simgrid::simix::unmarshal(simcall.args_[2]), simgrid::simix::unmarshal(simcall.args_[3]), simgrid::simix::unmarshal(simcall.args_[4]), simgrid::simix::unmarshal(simcall.args_[5]), simgrid::simix::unmarshal(simcall.args_[6]), simgrid::simix::unmarshal(simcall.args_[7]), simgrid::simix::unmarshal(simcall.args_[8])); + case Simcall::COMM_RECV: + simcall_HANDLER_comm_recv(&simcall_, simgrid::simix::unmarshal(simcall_.args_[0]), simgrid::simix::unmarshal(simcall_.args_[1]), simgrid::simix::unmarshal(simcall_.args_[2]), simgrid::simix::unmarshal(simcall_.args_[3]), simgrid::simix::unmarshal(simcall_.args_[4]), simgrid::simix::unmarshal(simcall_.args_[5]), simgrid::simix::unmarshal(simcall_.args_[6]), simgrid::simix::unmarshal(simcall_.args_[7]), simgrid::simix::unmarshal(simcall_.args_[8])); break; - case SIMCALL_COMM_IRECV: - simgrid::simix::marshal>(simcall.result_, simcall_HANDLER_comm_irecv(&simcall, simgrid::simix::unmarshal(simcall.args_[0]), simgrid::simix::unmarshal(simcall.args_[1]), simgrid::simix::unmarshal(simcall.args_[2]), simgrid::simix::unmarshal(simcall.args_[3]), simgrid::simix::unmarshal(simcall.args_[4]), simgrid::simix::unmarshal(simcall.args_[5]), simgrid::simix::unmarshal(simcall.args_[6]), simgrid::simix::unmarshal(simcall.args_[7]))); + case Simcall::COMM_IRECV: + simgrid::simix::marshal>(simcall_.result_, simcall_HANDLER_comm_irecv(&simcall_, simgrid::simix::unmarshal(simcall_.args_[0]), simgrid::simix::unmarshal(simcall_.args_[1]), simgrid::simix::unmarshal(simcall_.args_[2]), simgrid::simix::unmarshal(simcall_.args_[3]), simgrid::simix::unmarshal(simcall_.args_[4]), simgrid::simix::unmarshal(simcall_.args_[5]), simgrid::simix::unmarshal(simcall_.args_[6]), simgrid::simix::unmarshal(simcall_.args_[7]))); simcall_answer(); break; - case SIMCALL_COMM_WAITANY: - simcall_HANDLER_comm_waitany(&simcall, simgrid::simix::unmarshal(simcall.args_[0]), simgrid::simix::unmarshal(simcall.args_[1]), simgrid::simix::unmarshal(simcall.args_[2])); - break; - - case SIMCALL_COMM_WAIT: - simcall_HANDLER_comm_wait(&simcall, simgrid::simix::unmarshal(simcall.args_[0]), simgrid::simix::unmarshal(simcall.args_[1])); - break; - - case SIMCALL_COMM_TEST: - simcall_HANDLER_comm_test(&simcall, simgrid::simix::unmarshal(simcall.args_[0])); - break; - - case SIMCALL_COMM_TESTANY: - simcall_HANDLER_comm_testany(&simcall, simgrid::simix::unmarshal(simcall.args_[0]), simgrid::simix::unmarshal(simcall.args_[1])); + case Simcall::COMM_WAITANY: + simcall_HANDLER_comm_waitany(&simcall_, simgrid::simix::unmarshal(simcall_.args_[0]), simgrid::simix::unmarshal(simcall_.args_[1]), simgrid::simix::unmarshal(simcall_.args_[2])); break; - case SIMCALL_MUTEX_LOCK: - simcall_HANDLER_mutex_lock(&simcall, simgrid::simix::unmarshal(simcall.args_[0])); + case Simcall::COMM_WAIT: + simcall_HANDLER_comm_wait(&simcall_, simgrid::simix::unmarshal(simcall_.args_[0]), simgrid::simix::unmarshal(simcall_.args_[1])); break; - case SIMCALL_MUTEX_TRYLOCK: - simgrid::simix::marshal(simcall.result_, simcall_HANDLER_mutex_trylock(&simcall, simgrid::simix::unmarshal(simcall.args_[0]))); - simcall_answer(); - break; - - case SIMCALL_MUTEX_UNLOCK: - simcall_HANDLER_mutex_unlock(&simcall, simgrid::simix::unmarshal(simcall.args_[0])); - simcall_answer(); + case Simcall::COMM_TEST: + simcall_HANDLER_comm_test(&simcall_, simgrid::simix::unmarshal(simcall_.args_[0])); break; - case SIMCALL_COND_WAIT: - simcall_HANDLER_cond_wait(&simcall, simgrid::simix::unmarshal(simcall.args_[0]), simgrid::simix::unmarshal(simcall.args_[1])); + case Simcall::COMM_TESTANY: + simcall_HANDLER_comm_testany(&simcall_, simgrid::simix::unmarshal(simcall_.args_[0]), simgrid::simix::unmarshal(simcall_.args_[1])); break; - case SIMCALL_COND_WAIT_TIMEOUT: - simcall_HANDLER_cond_wait_timeout(&simcall, simgrid::simix::unmarshal(simcall.args_[0]), simgrid::simix::unmarshal(simcall.args_[1]), simgrid::simix::unmarshal(simcall.args_[2])); + case Simcall::COND_WAIT: + simcall_HANDLER_cond_wait(&simcall_, simgrid::simix::unmarshal(simcall_.args_[0]), simgrid::simix::unmarshal(simcall_.args_[1])); break; - case SIMCALL_SEM_ACQUIRE: - simcall_HANDLER_sem_acquire(&simcall, simgrid::simix::unmarshal(simcall.args_[0])); + case Simcall::COND_WAIT_TIMEOUT: + simcall_HANDLER_cond_wait_timeout(&simcall_, simgrid::simix::unmarshal(simcall_.args_[0]), simgrid::simix::unmarshal(simcall_.args_[1]), simgrid::simix::unmarshal(simcall_.args_[2])); break; - case SIMCALL_SEM_ACQUIRE_TIMEOUT: - simcall_HANDLER_sem_acquire_timeout(&simcall, simgrid::simix::unmarshal(simcall.args_[0]), simgrid::simix::unmarshal(simcall.args_[1])); + case Simcall::SEM_ACQUIRE: + simcall_HANDLER_sem_acquire(&simcall_, simgrid::simix::unmarshal(simcall_.args_[0])); break; - case SIMCALL_IO_WAIT: - simcall_HANDLER_io_wait(&simcall, simgrid::simix::unmarshal(simcall.args_[0])); + case Simcall::SEM_ACQUIRE_TIMEOUT: + simcall_HANDLER_sem_acquire_timeout(&simcall_, simgrid::simix::unmarshal(simcall_.args_[0]), simgrid::simix::unmarshal(simcall_.args_[1])); break; - case SIMCALL_MC_RANDOM: - simgrid::simix::marshal(simcall.result_, simcall_HANDLER_mc_random(&simcall, simgrid::simix::unmarshal(simcall.args_[0]), simgrid::simix::unmarshal(simcall.args_[1]))); + case Simcall::RUN_KERNEL: + SIMIX_run_kernel(simgrid::simix::unmarshal const*>(simcall_.args_[0])); simcall_answer(); break; - case SIMCALL_RUN_KERNEL: - SIMIX_run_kernel(simgrid::simix::unmarshal const*>(simcall.args_[0])); - simcall_answer(); - break; - - case SIMCALL_RUN_BLOCKING: - SIMIX_run_blocking(simgrid::simix::unmarshal const*>(simcall.args_[0])); + case Simcall::RUN_BLOCKING: + SIMIX_run_blocking(simgrid::simix::unmarshal const*>(simcall_.args_[0])); break; - case NUM_SIMCALLS: - break; - case SIMCALL_NONE: + case Simcall::NONE: throw std::invalid_argument(simgrid::xbt::string_printf("Asked to do the noop syscall on %s@%s", get_cname(), sg_host_get_name(get_host())));