X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/666f14c5995d2584dbb8dea680f17e6a915da146..8d0b1f2f1840a16bb9551f1cfd74f2488599f95b:/src/kernel/actor/SimcallObserver.cpp diff --git a/src/kernel/actor/SimcallObserver.cpp b/src/kernel/actor/SimcallObserver.cpp index 294fc3a645..d7657a4bcd 100644 --- a/src/kernel/actor/SimcallObserver.cpp +++ b/src/kernel/actor/SimcallObserver.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2019-2022. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2019-2023. 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. */ @@ -7,6 +7,7 @@ #include "simgrid/s4u/Host.hpp" #include "src/kernel/activity/CommImpl.hpp" #include "src/kernel/activity/MailboxImpl.hpp" +#include "src/kernel/activity/MutexImpl.hpp" #include "src/kernel/actor/ActorImpl.hpp" #include "src/mc/mc_config.hpp" @@ -21,6 +22,10 @@ void RandomSimcall::serialize(std::stringstream& stream) const stream << (short)mc::Transition::Type::RANDOM << ' '; stream << min_ << ' ' << max_; } +std::string RandomSimcall::to_string() const +{ + return "Random(min:" + std::to_string(min_) + " max:" + std::to_string(max_) + ")"; +} void RandomSimcall::prepare(int times_considered) { @@ -33,19 +38,6 @@ int RandomSimcall::get_max_consider() const return max_ - min_ + 1; } -bool ConditionWaitSimcall::is_enabled() -{ - if (static bool warned = false; not warned) { - XBT_INFO("Using condition variables in model-checked code is still experimental. Use at your own risk"); - warned = true; - } - return true; -} -void ConditionWaitSimcall::serialize(std::stringstream& stream) const -{ - THROW_UNIMPLEMENTED; -} - ActorJoinSimcall::ActorJoinSimcall(ActorImpl* actor, ActorImpl* other, double timeout) : SimcallObserver(actor), other_(s4u::ActorPtr(other->get_iface())), timeout_(timeout) { @@ -57,6 +49,39 @@ bool ActorJoinSimcall::is_enabled() void ActorJoinSimcall::serialize(std::stringstream& stream) const { stream << (short)mc::Transition::Type::ACTOR_JOIN << ' '; - stream << other_->get_pid() << ' ' << static_cast(timeout_ > 0); + stream << other_->get_pid() << ' ' << (timeout_ > 0); +} +std::string ActorJoinSimcall::to_string() const +{ + return "ActorJoin(pid:" + std::to_string(other_->get_pid()) + ")"; +} +void ActorSleepSimcall::serialize(std::stringstream& stream) const +{ + stream << (short)mc::Transition::Type::ACTOR_SLEEP; +} + +std::string ActorSleepSimcall::to_string() const +{ + return "ActorSleep()"; +} + +void ObjectAccessSimcallObserver::serialize(std::stringstream& stream) const +{ + stream << (short)mc::Transition::Type::OBJECT_ACCESS << ' '; + stream << object_ << ' ' << get_owner()->get_pid(); +} +std::string ObjectAccessSimcallObserver::to_string() const +{ + return "ObjectAccess(obj:" + ptr_to_id(object_) + + " owner:" + std::to_string(get_owner()->get_pid()) + ")"; +} +bool ObjectAccessSimcallObserver::is_visible() const +{ + return get_owner() != get_issuer(); } +ActorImpl* ObjectAccessSimcallObserver::get_owner() const +{ + return object_->simcall_owner_; +} + } // namespace simgrid::kernel::actor