12 #ifndef INCLUDE_DISTORTOS_MUTEX_HPP_ 13 #define INCLUDE_DISTORTOS_MUTEX_HPP_ 53 return std::numeric_limits<RecursiveLocksCount>::max();
70 const uint8_t priorityCeiling = {}) :
88 constexpr
explicit Mutex(
const Protocol protocol,
const uint8_t priorityCeiling = {}) :
203 template<
typename Rep,
typename Period>
204 int tryLockFor(
const std::chrono::duration<Rep, Period> duration)
206 return tryLockFor(std::chrono::duration_cast<TickClock::duration>(duration));
259 template<
typename Duration>
260 int tryLockUntil(
const std::chrono::time_point<TickClock, Duration> timePoint)
262 return tryLockUntil(std::chrono::time_point_cast<TickClock::duration>(timePoint));
297 template<
typename Rep,
typename Period>
318 template<
typename Duration>
319 bool try_lock_until(
const std::chrono::time_point<TickClock, Duration> timePoint)
346 const Mutex& operator=(
const Mutex&) =
delete;
371 #endif // INCLUDE_DISTORTOS_MUTEX_HPP_ int tryLockFor(TickClock::duration duration)
Tries to lock the mutex for given duration of time.
Definition: Mutex.cpp:49
int lock()
Locks the mutex.
Definition: Mutex.cpp:30
uint16_t RecursiveLocksCount
type used for counting recursive locks
Definition: MutexControlBlock.hpp:40
MutexControlBlock class is a control block for Mutex.
Definition: MutexControlBlock.hpp:32
int tryLockUntil(TickClock::time_point timePoint)
Tries to lock the mutex until given time point.
Definition: Mutex.cpp:54
int tryLock()
Tries to lock the mutex.
Definition: Mutex.cpp:42
bool try_lock_until(const std::chrono::time_point< TickClock, Duration > timePoint)
Tries to lock the mutex until given time point.
Definition: Mutex.hpp:319
std::chrono::time_point< TickClock > time_point
basic time_point type of clock
Definition: TickClock.hpp:42
bool try_lock()
Tries to lock the mutex.
Definition: Mutex.hpp:276
normal mutex, similar to PTHREAD_MUTEX_NORMAL
MutexControlBlock class header.
~Mutex()=default
Mutex's destructor.
Top-level namespace of distortos project.
Definition: buttons.hpp:33
Mutex is the basic synchronization primitive.
Definition: Mutex.hpp:30
int unlock()
Unlocks the mutex.
Definition: Mutex.cpp:67
no protocol, similar to PTHREAD_PRIO_NONE
int tryLockFor(const std::chrono::duration< Rep, Period > duration)
Tries to lock the mutex for given duration of time.
Definition: Mutex.hpp:204
static constexpr RecursiveLocksCount getMaxRecursiveLocks()
Gets the maximum number of recursive locks possible before returning EAGAIN.
Definition: Mutex.hpp:51
MutexProtocol
mutex protocols
Definition: MutexProtocol.hpp:21
constexpr Mutex(const Type type=Type::normal, const Protocol protocol=Protocol::none, const uint8_t priorityCeiling={})
Mutex's constructor.
Definition: Mutex.hpp:69
std::chrono::duration< rep, period > duration
basic duration type of clock
Definition: TickClock.hpp:39
constexpr Mutex(const Protocol protocol, const uint8_t priorityCeiling={})
Mutex's constructor, overload for "normal" type.
Definition: Mutex.hpp:88
int tryLockUntil(const std::chrono::time_point< TickClock, Duration > timePoint)
Tries to lock the mutex until given time point.
Definition: Mutex.hpp:260
constexpr MutexControlBlock(const Type type, const Protocol protocol, const uint8_t priorityCeiling)
MutexControlBlock's constructor.
Definition: MutexControlBlock.hpp:90
bool try_lock_for(const std::chrono::duration< Rep, Period > duration)
Tries to lock the mutex for given duration of time.
Definition: Mutex.hpp:298
MutexType
type of mutex
Definition: MutexType.hpp:21
int tryLockInternal()
Internal version of tryLock().
Definition: Mutex.cpp:94