16#include "pw_polyfill/language_feature_macros.h"
17#include "pw_sync/lock_annotations.h"
31 void lock() PW_EXCLUSIVE_LOCK_FUNCTION() {
32 DoLockOperation(Operation::kLock);
35 void unlock() PW_UNLOCK_FUNCTION() { DoLockOperation(Operation::kUnlock); }
40 enum class Operation {
48 virtual void DoLockOperation(Operation operation) = 0;
53class PW_LOCKABLE(
"pw::sync::NoOpLock")
NoOpLock final
70 void DoLockOperation(Operation)
override {}
79template <
typename LockType>
85 LockType& impl() {
return impl_; }
88 void DoLockOperation(Operation operation)
override
89 PW_NO_LOCK_SAFETY_ANALYSIS {
91 case Operation::kLock:
94 case Operation::kUnlock:
96 return impl_.unlock();
Definition: virtual_basic_lockable.h:80
Definition: virtual_basic_lockable.h:54
static NoOpLock & Instance()
Definition: virtual_basic_lockable.h:64
Definition: virtual_basic_lockable.h:29