zephyr/kernel
Andy Ross 8d94967ec4 kernel/workq: Cleanup bespoke reschedule point
The work queue has a semi/non-standard reschedule point implemented
using k_yield(), with a check to see if the current thread is
preemptible.  Just call z_reschedule_unlocked(), it has this check
internally and is the intended API for this.

Really, this is only a half fix.  Ideally the schedule point and the
lock release should be atomic[1] via the more idiomatic
z_reschedule().  But that would take some surgery, so let's go with
the simpler cleanup first.

This also avoids having to duplicate logic that gets added to
reschedule points by an upcoming patch.

[1] So that they represent a condition variable and don't race at the
end. In this case the race is present but benign, since the only thing
we really want to know is that the queue thread gets a chance to run.
The only cost is an occasional duplicated/needless context switch if
two threads are racing on a submit.

Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2022-05-02 10:23:13 -05:00
..
include pm: Only resize power domains 2022-04-18 17:25:01 -07:00
paging kernel: mmu: z_backing_store* to k_mem_paging_backing_store* 2021-05-28 11:33:22 -04:00
atomic_c.c
banner.c
cache_handlers.c cache: Rename sys_{dcache,icache}_* to sys_{data,instr}_cache_* 2021-05-08 07:00:33 +02:00
CMakeLists.txt kernel: move thread usage routines to own file 2022-01-10 10:38:06 -05:00
compiler_stack_protect.c
condvar.c
device.c kernel/device: Remove unknown external pointer 2022-04-08 09:59:00 -04:00
errno.c
events.c kernel: add support for event objects 2021-10-16 06:27:10 -04:00
fatal.c
futex.c futex: Avoid unnecessary lock 2021-07-30 20:21:04 -04:00
idle.c pm: Do not suspend during kernel initialization 2022-01-19 14:14:28 -05:00
init.c kernel: Remove idle thread cpu index on single-core devices 2022-03-30 10:08:48 -04:00
Kconfig pm: device: Dynamically add a device to a power domain 2022-04-18 17:25:01 -07:00
Kconfig.vm everywhere: fix typos 2022-03-18 13:24:08 -04:00
kheap.c kernel: kheap: make init work with demand paging 2021-08-26 21:16:22 -04:00
mailbox.c kernel: remove @return doc for void functions 2022-01-12 16:02:16 -05:00
main_weak.c kernel: extract __weak main() into independent file 2021-08-28 08:48:03 -04:00
mem_domain.c kernel: mem_domain: k_mem_domain_add_thread to return errors 2021-11-22 12:45:22 -05:00
mem_slab.c kernel: remove @return doc for void functions 2022-01-12 16:02:16 -05:00
mempool.c Tracing: k_free tracing hook heap reference added 2021-11-16 09:45:01 -05:00
mmu.c kernel: mmu: add a log line for z_phys_unmap 2022-02-24 08:38:38 -06:00
msg_q.c kernel: remove object tracing 2021-05-07 22:10:21 -04:00
mutex.c kernel: mutex: remove unnecessary schedule locking 2022-04-20 21:03:59 -04:00
pipes.c kernel: pipes: add pipe flush routines 2022-01-10 12:17:14 -05:00
poll.c everywhere: fix typos 2022-03-14 20:22:24 -04:00
queue.c kernel: remove object tracing 2021-05-07 22:10:21 -04:00
sched.c kernel: introduce convinience apu to pin thread to a cpu 2022-04-19 13:05:09 -04:00
sem.c kernel: remove object tracing 2021-05-07 22:10:21 -04:00
smp.c kernel: Refactor SMP cpu initialization a bit 2022-03-01 09:59:15 -05:00
stack.c kernel: remove object tracing 2021-05-07 22:10:21 -04:00
system_work_q.c
thread.c kernel: update k_thread_state_str() API 2022-04-20 20:20:13 -04:00
timeout.c kernel/timeout: Cleanup/speedup parallel announce logic 2022-04-13 13:26:14 -07:00
timer.c kernel: remove @return doc for void functions 2022-01-12 16:02:16 -05:00
usage.c kernel: Update CPU runtime stats of non-idle time 2022-01-20 08:22:01 -05:00
userspace_handler.c
userspace.c userspace: plug thread index leak in k_object_alloc() 2022-03-14 19:18:34 -04:00
version.c
work.c kernel/workq: Cleanup bespoke reschedule point 2022-05-02 10:23:13 -05:00
xip.c kernel/init.c: allow for memset/memcpy alternatives during early boot 2022-02-21 21:00:12 -05:00