-class MutexUnlockSimcall : public SimcallObserver {
- using SimcallObserver::SimcallObserver;
-
-public:
- std::string to_string(int times_considered) const override;
- std::string dot_label() const override;
-};
-
-class MutexLockSimcall : public SimcallObserver {
- activity::MutexImpl* const mutex_;
- const bool blocking_;
-
-public:
- MutexLockSimcall(smx_actor_t actor, activity::MutexImpl* mutex, bool blocking = true)
- : SimcallObserver(actor), mutex_(mutex), blocking_(blocking)
- {
- }
- bool is_enabled() const override;
- std::string to_string(int times_considered) const override;
- std::string dot_label() const override;
- activity::MutexImpl* get_mutex() const { return mutex_; }
-};
-
-class ConditionWaitSimcall : public ResultingSimcall<bool> {
- activity::ConditionVariableImpl* const cond_;
- activity::MutexImpl* const mutex_;
+class ActorJoinSimcall final : public SimcallObserver {
+ s4u::ActorPtr const other_; // We need a Ptr to ensure access to the actor after its end, but Ptr requires s4u