X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/a8a66c743439c94d5de5bcb8a3e50dcd207b6d2f..59a2292cca5e121a5db0c933112d4c421ded712a:/src/kernel/actor/SimcallObserver.cpp diff --git a/src/kernel/actor/SimcallObserver.cpp b/src/kernel/actor/SimcallObserver.cpp index c07d073e27..2d2cf8827e 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" @@ -23,7 +24,7 @@ void RandomSimcall::serialize(std::stringstream& stream) const } std::string RandomSimcall::to_string() const { - return std::string("Random(min:") + std::to_string(min_) + " max:" + std::to_string(max_) + ")"; + return "Random(min:" + std::to_string(min_) + " max:" + std::to_string(max_) + ")"; } void RandomSimcall::prepare(int times_considered) @@ -51,7 +52,8 @@ void ConditionWaitSimcall::serialize(std::stringstream& stream) const } std::string ConditionWaitSimcall::to_string() const { - THROW_UNIMPLEMENTED; + return "ConditionWait(cond_id:" + ptr_to_id(get_cond()) + + " mutex_id:" + std::to_string(get_mutex()->get_id()) + ")"; } ActorJoinSimcall::ActorJoinSimcall(ActorImpl* actor, ActorImpl* other, double timeout) @@ -69,6 +71,26 @@ void ActorJoinSimcall::serialize(std::stringstream& stream) const } std::string ActorJoinSimcall::to_string() const { - return std::string("ActorJoin(pid:") + std::to_string(other_->get_pid()) + ")"; + return "ActorJoin(pid:" + std::to_string(other_->get_pid()) + ")"; +} + +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