zephyr/kernel
James Harris 6543e06914 kernel: sched: avoid unnecessary lock in z_impl_k_yield
`z_impl_k_yield` unlocked sched_spinlock, only to lock it again
immediately, do a little bit more work, then unlock it again.
This causes performance issues on SMP, where `sched_spinlock`
is often fairly highly contended and cores often end up spinning
for quite a while waiting to retake the lock in `z_swap_unlocked`.

Instead directly pass the spinlock key to `z_swap` and avoid the
extra lock+unlock.

Signed-off-by: James Harris <james.harris@intel.com>
2021-03-02 14:35:21 -05:00
..
include kernel: sched: change to 3-way thread priority comparison 2021-03-02 14:27:14 -05:00
atomic_c.c kernel: Add k_heap synchronized memory allocator 2020-04-14 10:05:55 -07:00
banner.c kernel: init: move banner handling 2020-11-27 20:08:14 -05:00
cache_handlers.c cache: Expand the APIs for cache flushing 2021-01-19 14:31:02 -05:00
CMakeLists.txt kernel: Remove abort and join implementation (UNBISECTABLE) 2021-02-24 16:39:15 -05:00
compiler_stack_protect.c tests: coverage: exclude the CODE UNREACHABLE of code coverage 2021-01-15 12:42:00 -05:00
condvar.c kernel: add vrfy hooks to support userspace with condvar 2021-01-19 08:55:47 -05:00
device.c device: store device pm busy status in the state structure 2021-02-19 10:11:20 -05:00
errno.c kernel: support using thread local storage for errno 2020-10-24 10:52:00 -07:00
fatal.c debug: coredump: remove z_ prefix for stuff used outside subsys 2021-01-21 22:08:59 -05:00
futex.c kernel/timeout: Make timeout arguments an opaque type 2020-03-31 19:40:47 -04:00
idle.c kernel: Remove abort and join implementation (UNBISECTABLE) 2021-02-24 16:39:15 -05:00
init.c device: perform dynamic device initialization during system startup 2021-02-19 10:11:20 -05:00
Kconfig kernel: Decouple TICKS_PER_SEC from TICKLESS_CAPABLE 2021-02-04 12:34:23 -05:00
kheap.c kernel: add k_heap_aligned_alloc 2020-12-08 13:21:26 -05:00
mailbox.c kernel: Remove legacy mem_pool usage 2020-12-07 21:50:14 -05:00
mem_domain.c tests: coverage: exclude the CODE UNREACHABLE of code coverage 2021-01-15 12:42:00 -05:00
mem_slab.c kernel: mem_slab: Optimize mem_slab_free 2020-12-07 11:36:48 +01:00
mempool.c z_heap_aligned_alloc(): avoid memory wastage 2021-01-22 10:04:43 -05:00
mmu.c kernel: mmu: Fix trivial typos 2021-02-04 14:00:36 -05:00
msg_q.c doc: Clarify semantics of k_msgq_put 2020-09-23 13:21:07 -05:00
mutex.c kernel: Cleanup logger setup in kernel files 2020-11-27 09:56:34 -05:00
pipes.c kernel: Remove legacy mem_pool usage 2020-12-07 21:50:14 -05:00
poll.c kernel: sched: change to 3-way thread priority comparison 2021-03-02 14:27:14 -05:00
queue.c kernel/queue: fix queue append/get race 2020-10-28 17:01:41 +01:00
sched.c kernel: sched: avoid unnecessary lock in z_impl_k_yield 2021-03-02 14:35:21 -05:00
sem.c device: Const-ify all device driver instance pointers 2020-09-02 13:48:13 +02:00
smp.c tests: coverage: exclude the CODE UNREACHABLE of code coverage 2021-01-15 12:42:00 -05:00
stack.c kernel: stack: fix stack_push spinlock and return 2020-10-07 17:10:36 -04:00
system_work_q.c device: Const-ify all device driver instance pointers 2020-09-02 13:48:13 +02:00
thread.c kernel: Add new k_thread_abort()/k_thread_join() 2021-02-24 16:39:15 -05:00
timeout.c kernel/timeout: Correctly clamp z_clock_set_timeout() argument 2021-02-24 16:39:15 -05:00
timer.c kernel: const-qualify objects used to calculate delay values 2021-01-22 08:05:26 -06:00
userspace.c kernel: userspace: aligned memory allocation for dynamic objects 2021-01-13 09:43:55 -08:00
userspace_handler.c userspace: update k_object API to support immutable objects 2020-09-02 13:48:13 +02:00
version.c zephyr: replace zephyr integer types with C99 types 2020-06-08 08:23:57 -05:00
work_q.c kernel: Remove CONFIG_LEGACY_TIMEOUT_API 2021-01-14 21:33:16 -05:00
xip.c linker: arm: Add cortex_m itcm section 2021-01-15 14:51:20 +01:00