pw_sync_embos#
Stable
This is a set of backends for pw_sync based on embOS v4.
Critical Section Lock Primitives#
Mutex & TimedMutex#
The embOS v4 backend for the Mutex and TimedMutex use OS_RSEMA as the
underlying type. It is created using OS_CreateRSema as part of the
constructors and cleaned up using OS_DeleteRSema in the destructors.
InterruptSpinLock#
The embOS v4 backend for InterruptSpinLock is backed by a bool which permits
these objects to detect accidental recursive locking.
This object uses OS_IncDI and OS_DecRI to mask interrupts which enables
the critical section. In addition, OS_SuspendAllTasks and
OS_ResumeAllSuspendedTasks are used to to prevent accidental thread context
switches while the InterruptSpinLock is locked.
Signaling Primitives#
ThreadNotification & TimedThreadNotification#
Prefer using the binary semaphore backends for ThreadNotifications, as the
native embOS v4 implementation of its semaphores (OS_CSEMA) is very
efficient:
pw_sync:binary_semaphore_thread_notification_backendpw_sync:binary_semaphore_timed_thread_notification_backend
BinarySemaphore & CountingSemaphore#
The embOS v4 backends for the BinarySemaphore and CountingSemaphore use
OS_CSEMA as the underlying type. It is created using OS_CreateCSema as
part of the constructor and cleaned up using OS_DeleteCSema in the
destructor.