kernel/queue: Spinlockify
Straightforward port. Each struct k_queue object gets a spinlock to control obvious data ownership. Note that this port actually discovered a preexisting bug: the -ENOMEM case in queue_insert() was failing to release the lock. But because the tests that hit that path didn't rely on other threads being scheduled, they ran to successful completion even with interrupts disabled. The spinlock API detects that as a recursive lock when asserts are enabled. Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
This commit is contained in:
parent
f6521a360d
commit
603ea42764
2 changed files with 18 additions and 20 deletions
|
@ -1728,6 +1728,7 @@ static inline u32_t k_uptime_delta_32(s64_t *reftime)
|
|||
|
||||
struct k_queue {
|
||||
sys_sflist_t data_q;
|
||||
struct k_spinlock lock;
|
||||
union {
|
||||
_wait_q_t wait_q;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue