zephyr/kernel
Andy Ross 99c2d2d047 kernel/queue: Remove interior use of k_poll()
The k_queue data structure, when CONFIG_POLL was enabled, would
inexplicably use k_poll() as its blocking mechanism instead of the
original wait_q/pend() code.  This was actually racy, see commit
b173e4353f.  The code was structured as a condition variable: using
a spinlock around the queue data before deciding to block.  But unlike
pend_current_thread(), k_poll() cannot atomically release a lock.

A workaround had been in place for this, and then accidentally
reverted (both by me!) because the code looked "wrong".

This is just fragile, there's no reason to have two implementations of
k_queue_get().  Remove.

Note that this also removes a test case in the work_queue test where
(when CONFIG_POLL was enabled, but not otherwise) it was checking for
the ability to immediately cancel a delayed work item that was
submitted with a timeout of K_NO_WAIT (i.e. "queue it immediately").
This DOES NOT work with the origina/non-poll queue backend, and has
never been a documented behavior of k_delayed_work_submit_to_queue()
under any circumstances.  I don't know why we were testing this.

Fixes #25904

Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2020-06-03 01:47:41 +02:00
..
include kernel: simplify dummy thread implementation 2020-05-13 21:23:52 +02:00
atomic_c.c kernel: Add k_heap synchronized memory allocator 2020-04-14 10:05:55 -07:00
CMakeLists.txt kernel: Add k_mem_pool compatibility layer on top of k_heap 2020-04-14 10:05:55 -07:00
compiler_stack_protect.c kernel: Fix gcc-9.2 warning with _StackCheckHandler 2019-10-04 05:22:30 -07:00
device.c device_pm: correct nop documented behavior 2020-05-21 20:32:12 +02:00
errno.c headers: Refactor kernel and arch headers. 2019-11-06 16:07:32 -08:00
fatal.c kernel: fatal: fix indentation in z_fatal_error 2020-03-11 10:26:36 +02:00
futex.c kernel/timeout: Make timeout arguments an opaque type 2020-03-31 19:40:47 -04:00
idle.c kernel: rename z_arch_ to arch_ 2019-11-07 15:21:46 -08:00
init.c kernel: simplify dummy thread implementation 2020-05-13 21:23:52 +02:00
Kconfig kernel/Kconfig: Add prompt for CONFIG_TIMEOUT_64BIT 2020-05-06 06:05:03 -04:00
Kconfig.power_mgmt kconfig: Clean up header comments and make them consistent 2019-11-04 17:31:27 -05:00
kheap.c kernel: Add k_mem_pool compatibility layer on top of k_heap 2020-04-14 10:05:55 -07:00
mailbox.c kernel/timeout: Make timeout arguments an opaque type 2020-03-31 19:40:47 -04:00
mem_domain.c kernel: fix k_mem_partition data types 2019-12-12 14:48:42 -08:00
mem_slab.c kernel/timeout: Make timeout arguments an opaque type 2020-03-31 19:40:47 -04:00
mempool_sys.c kernel: Refactor k_mem_pool APIs into a base and derived level 2020-04-14 10:05:55 -07:00
mempool.c kernel: Refactor k_mem_pool APIs into a base and derived level 2020-04-14 10:05:55 -07:00
msg_q.c kernel/timeout: Make timeout arguments an opaque type 2020-03-31 19:40:47 -04:00
mutex.c kernek: don't allow mutex ops in ISRs 2020-05-28 01:38:05 +02:00
pipes.c kernel: pipe: read_avail / write_avail syscalls 2020-05-07 19:39:53 +02:00
poll.c kernel/timeout: Make timeout arguments an opaque type 2020-03-31 19:40:47 -04:00
queue.c kernel/queue: Remove interior use of k_poll() 2020-06-03 01:47:41 +02:00
sched.c kernel: fix issue with k_thread_join() timeouts 2020-05-05 11:43:08 -07:00
sem.c kernel/timeout: Make timeout arguments an opaque type 2020-03-31 19:40:47 -04:00
smp.c kernel: simplify dummy thread implementation 2020-05-13 21:23:52 +02:00
stack.c kernel/timeout: Make timeout arguments an opaque type 2020-03-31 19:40:47 -04:00
system_work_q.c kernel: system_work_q: Set dedicated "sysworkq" name. 2018-10-19 07:58:45 -04:00
thread_abort.c kernel: use z_swap_unlocked in k_thread_abort 2020-03-12 10:57:02 -04:00
thread.c kernel: wipe TLS before dropping to user mode 2020-05-13 22:02:48 +02:00
timeout.c kernel/timeout: Check for K_FOREVER in z_add_timeout() 2020-04-22 11:10:17 -07:00
timer.c kernel/timer: Handle K_FOREVER in k_timer_start() 2020-05-29 19:59:14 +02:00
userspace_handler.c kernel: rename struct _k_object 2020-03-17 20:11:27 +02:00
userspace.c kernel: delete separate logic for priv stacks 2020-03-17 20:11:27 +02:00
version.c doc: add kernel version API to doxygen 2018-12-08 17:24:53 -05:00
work_q.c kernel/timeout: Make timeout arguments an opaque type 2020-03-31 19:40:47 -04:00