diff --git a/include/spinlock.h b/include/spinlock.h index d732310e710..5161443eca3 100644 --- a/include/spinlock.h +++ b/include/spinlock.h @@ -38,6 +38,7 @@ static inline void z_arch_irq_unlock(int key) struct k_spinlock; int z_spin_lock_valid(struct k_spinlock *l); int z_spin_unlock_valid(struct k_spinlock *l); +void z_spin_lock_set_owner(struct k_spinlock *l); #define SPIN_VALIDATE #endif #endif @@ -81,6 +82,9 @@ static ALWAYS_INLINE k_spinlock_key_t k_spin_lock(struct k_spinlock *l) } #endif +#ifdef SPIN_VALIDATE + z_spin_lock_set_owner(l); +#endif return k; } diff --git a/kernel/thread.c b/kernel/thread.c index 6c70458b89e..5f8cab4883f 100644 --- a/kernel/thread.c +++ b/kernel/thread.c @@ -723,7 +723,6 @@ int z_spin_lock_valid(struct k_spinlock *l) return 0; } } - l->thread_cpu = _current_cpu->id | (u32_t)_current; return 1; } @@ -735,4 +734,10 @@ int z_spin_unlock_valid(struct k_spinlock *l) l->thread_cpu = 0; return 1; } + +void z_spin_lock_set_owner(struct k_spinlock *l) +{ + l->thread_cpu = _current_cpu->id | (u32_t)_current; +} + #endif