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 {
53class PW_LOCKABLE(
"pw::sync::NoOpLock")
NoOpLock final
76template <
typename LockType>
82 LockType& impl() {
return impl_; }
86 PW_NO_LOCK_SAFETY_ANALYSIS {
88 case Operation::kLock:
91 case Operation::kUnlock:
93 return impl_.unlock();
106template <
typename LockType>
110 [[nodiscard]]
bool try_lock() PW_EXCLUSIVE_TRYLOCK_FUNCTION(
true) {
Definition: virtual_basic_lockable.h:77
void DoLockOperation(Operation operation) override
Definition: virtual_basic_lockable.h:85
Definition: virtual_basic_lockable.h:108
Definition: virtual_basic_lockable.h:54
void DoLockOperation(Operation) override
Definition: virtual_basic_lockable.h:70
static NoOpLock & Instance()
Definition: virtual_basic_lockable.h:64
Definition: virtual_basic_lockable.h:29
virtual void DoLockOperation(Operation operation)=0