Embedded Artistry Framework
Embedded Systems C++ Framework
Public Member Functions | Private Attributes | List of all members
os::posix::ConditionVariable Class Referencefinal

#include <posix_condition_variable.hpp>

Inheritance diagram for os::posix::ConditionVariable:
Inheritance graph

Public Member Functions

 ConditionVariable ()=default
 
 ~ConditionVariable () noexcept
 
bool wait (embvm::VirtualMutex *mutex) noexcept final
 Blocks the current thread until the condition variable is woken up or after the specified timeout duration. More...
 
bool wait (embvm::VirtualMutex *mutex, const embvm::os_timeout_t &timeout) noexcept final
 
bool timed_wait (embvm::VirtualMutex *mutex, timespec timeout) noexcept
 
void signal () noexcept final
 notifies one waiting thread More...
 
void broadcast () noexcept final
 Notify all waiting threads. More...
 
embvm::cv::handle_t native_handle () const noexcept final
 
bool wait (embvm::VirtualMutex *mutex, const embvm::cv::func_t &predicate) noexcept
 
bool wait (embvm::VirtualMutex *mutex, const embvm::cv::func_t &predicate, const embvm::os_timeout_t &timeout=embvm::OS_WAIT_FOREVER) noexcept
 
void notify_one () noexcept
 Alias for signal so we can work with STL types. More...
 
void notify_all () noexcept
 Alias for broadcast so we can work with STL types. More...
 

Private Attributes

pthread_cond_t handle_ = PTHREAD_COND_INITIALIZER
 

Constructor & Destructor Documentation

◆ ConditionVariable()

os::posix::ConditionVariable::ConditionVariable ( )
default

◆ ~ConditionVariable()

os::posix::ConditionVariable::~ConditionVariable ( )
inlinenoexcept

References assert, handle_, and r.

Member Function Documentation

◆ broadcast()

void os::posix::ConditionVariable::broadcast ( )
inlinefinalvirtualnoexcept

Notify all waiting threads.

Implements embvm::VirtualConditionVariable.

References assert, handle_, and r.

Referenced by os::posix::EventFlag::set(), and os::posix::EventFlag::setFromISR().

◆ native_handle()

embvm::cv::handle_t os::posix::ConditionVariable::native_handle ( ) const
inlinefinalvirtualnoexcept

Implements embvm::VirtualConditionVariable.

References handle_.

◆ notify_all()

void embvm::VirtualConditionVariable::notify_all ( )
inlinenoexceptinherited

Alias for broadcast so we can work with STL types.

References embvm::VirtualConditionVariable::broadcast().

◆ notify_one()

void embvm::VirtualConditionVariable::notify_one ( )
inlinenoexceptinherited

Alias for signal so we can work with STL types.

References embvm::VirtualConditionVariable::signal().

◆ signal()

void os::posix::ConditionVariable::signal ( )
inlinefinalvirtualnoexcept

notifies one waiting thread

Implements embvm::VirtualConditionVariable.

References assert, handle_, and r.

◆ timed_wait()

bool os::posix::ConditionVariable::timed_wait ( embvm::VirtualMutex mutex,
timespec  timeout 
)
inlinenoexcept

References handle_.

Referenced by wait().

◆ wait() [1/4]

bool os::posix::ConditionVariable::wait ( embvm::VirtualMutex mutex)
inlinefinalvirtualnoexcept

Blocks the current thread until the condition variable is woken up or after the specified timeout duration.

Implements embvm::VirtualConditionVariable.

References assert, handle_, and r.

Referenced by os::posix::EventFlag::get(), and wait().

◆ wait() [2/4]

bool os::posix::ConditionVariable::wait ( embvm::VirtualMutex mutex,
const embvm::os_timeout_t timeout 
)
inlinefinalvirtualnoexcept

◆ wait() [3/4]

bool embvm::VirtualConditionVariable::wait ( embvm::VirtualMutex mutex,
const embvm::cv::func_t predicate 
)
inlinenoexceptinherited

◆ wait() [4/4]

bool embvm::VirtualConditionVariable::wait ( embvm::VirtualMutex mutex,
const embvm::cv::func_t predicate,
const embvm::os_timeout_t timeout = embvm::OS_WAIT_FOREVER 
)
inlinenoexceptinherited

We break when the predicate is true or when we've timed out

References embvm::VirtualConditionVariable::wait().

Member Data Documentation

◆ handle_

pthread_cond_t os::posix::ConditionVariable::handle_ = PTHREAD_COND_INITIALIZER
private

The documentation for this class was generated from the following file: