std::string to_string(bool verbose) const override;
BarrierTransition(aid_t issuer, int times_considered, Type type, std::stringstream& stream);
bool depends(const Transition* other) const override;
+ bool reversible_race(const Transition* other) const override;
};
class MutexTransition : public Transition {
std::string to_string(bool verbose) const override;
MutexTransition(aid_t issuer, int times_considered, Type type, std::stringstream& stream);
bool depends(const Transition* other) const override;
+ bool reversible_race(const Transition* other) const override;
uintptr_t get_mutex() const { return this->mutex_; }
aid_t get_owner() const { return this->owner_; }
class SemaphoreTransition : public Transition {
unsigned int sem_; // ID
bool granted_;
+ unsigned capacity_;
public:
std::string to_string(bool verbose) const override;
SemaphoreTransition(aid_t issuer, int times_considered, Type type, std::stringstream& stream);
bool depends(const Transition* other) const override;
+ bool reversible_race(const Transition* other) const override;
+
+ int get_capacity() const { return capacity_; }
};
} // namespace simgrid::mc