Lines Matching refs:lock
43 static inline void __attribute__((always_inline)) spinlock_initialize(spinlock_t *lock) in spinlock_initialize() argument
45 assert(lock); in spinlock_initialize()
47 lock->owner = SPINLOCK_FREE; in spinlock_initialize()
48 lock->count = 0; in spinlock_initialize()
66 static inline bool __attribute__((always_inline)) spinlock_acquire(spinlock_t *lock, int32_t timeou… in spinlock_acquire() argument
74 assert(lock); in spinlock_acquire()
89 if (lock->owner == core_id) { in spinlock_acquire()
90 … assert(lock->count > 0 && lock->count < 0xFF); // Bad count value implies memory corruption in spinlock_acquire()
91 lock->count++; in spinlock_acquire()
103 lock_set = esp_cpu_compare_and_set(&lock->owner, SPINLOCK_FREE, core_id); in spinlock_acquire()
112 lock_set = esp_cpu_compare_and_set(&lock->owner, SPINLOCK_FREE, core_id); in spinlock_acquire()
121 assert(lock->owner == core_id); in spinlock_acquire()
122 … assert(lock->count == 0); // This is the first time the lock is set, so count should still be 0 in spinlock_acquire()
123 lock->count++; // Finally, we increment the lock count in spinlock_acquire()
125 assert(lock->owner == SPINLOCK_FREE || lock->owner == other_core_id); in spinlock_acquire()
126 assert(lock->count < 0xFF); // Bad count value implies memory corruption in spinlock_acquire()
150 static inline void __attribute__((always_inline)) spinlock_release(spinlock_t *lock) in spinlock_release() argument
156 assert(lock); in spinlock_release()
160 assert(core_id == lock->owner); // This is a lock that we didn't acquire, or the lock is corrupt in spinlock_release()
161 lock->count--; in spinlock_release()
163 if (!lock->count) { // If this is the last recursive release of the lock, mark the lock as free in spinlock_release()
164 lock->owner = SPINLOCK_FREE; in spinlock_release()
166 assert(lock->count < 0x100); // Indicates memory corruption in spinlock_release()