16#include "pw_polyfill/language_feature_macros.h"
17#include "pw_sync/lock_annotations.h"
34 DoLockOperation(Operation::kLock);
42 enum class Operation {
78template <
typename LockType>
84 LockType& impl() {
return impl_; }
90 case Operation::kLock:
93 case Operation::kUnlock:
95 return impl_.unlock();
107template <
typename LockType>
Definition: virtual_basic_lockable.h:79
void DoLockOperation(Operation operation) override
Definition: virtual_basic_lockable.h:87
Definition: virtual_basic_lockable.h:109
Definition: virtual_basic_lockable.h:56
void DoLockOperation(Operation) override
Definition: virtual_basic_lockable.h:72
static NoOpLock & Instance()
Definition: virtual_basic_lockable.h:66
Definition: virtual_basic_lockable.h:31
virtual void DoLockOperation(Operation operation)=0
#define PW_CONSTINIT
Definition: language_feature_macros.h:52
#define PW_LOCKABLE(name)
Definition: lock_annotations.h:208
#define PW_EXCLUSIVE_TRYLOCK_FUNCTION(...)
Definition: lock_annotations.h:260
#define PW_NO_LOCK_SAFETY_ANALYSIS
Definition: lock_annotations.h:292
#define PW_EXCLUSIVE_LOCK_FUNCTION(...)
Definition: lock_annotations.h:230
#define PW_UNLOCK_FUNCTION(...)
Definition: lock_annotations.h:247
Definition: binary_semaphore.h:26