zephyr/kernel
Andy Ross 042d8ecca9 kernel: Add alternative _arch_switch context switch primitive
The existing __swap() mechanism is too high level for some
applications because of its scheduler-awareness.  This introduces a
new _arch_switch() mechanism, which is a simpler primitive that looks
like:

    void _arch_switch(void *handle, void **old_handle_out);

The new thread handle (typically just a stack pointer) is specified
explicitly instead of being picked up from the scheduler by
per-architecture code, and on return the "old" thread handle that got
switched out is returned through the pointer.

The new primitive (currently available only on xtensa) is selected
when CONFIG_USE_SWITCH is "y".  A new C _Swap() implementation based
on this primitive is then added which operates compatibly.

Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2018-02-16 10:44:29 -05:00
..
include kernel: Add alternative _arch_switch context switch primitive 2018-02-16 10:44:29 -05:00
posix kernel: Fix nano_internal.h inclusion 2018-02-16 10:44:29 -05:00
alert.c kernel: Provide only one _SYSCALL_HANDLER() macro 2017-10-16 13:42:15 -04:00
atomic_c.c
CMakeLists.txt kernel: move posix header to posix/ 2017-12-27 14:16:08 -05:00
compiler_stack_protect.c
device.c kernel: device: Only compare strings if pointer comparison fails 2018-02-15 17:31:59 -08:00
errno.c
idle.c
init.c kernel: Fix nano_internal.h inclusion 2018-02-16 10:44:29 -05:00
int_latency_bench.c
Kconfig kernel: Add alternative _arch_switch context switch primitive 2018-02-16 10:44:29 -05:00
Kconfig.event_logger kconfig: fix more help spacing issues 2018-02-15 23:20:55 -05:00
Kconfig.power_mgmt kconfig: fix more help spacing issues 2018-02-15 23:20:55 -05:00
mailbox.c kernel: Fix nano_internal.h inclusion 2018-02-16 10:44:29 -05:00
mem_domain.c kernel: mem_domain: Break down assertions 2018-02-14 10:07:10 -05:00
mem_slab.c kernel: Fix nano_internal.h inclusion 2018-02-16 10:44:29 -05:00
mempool.c kernel: Fix nano_internal.h inclusion 2018-02-16 10:44:29 -05:00
msg_q.c kernel: Fix nano_internal.h inclusion 2018-02-16 10:44:29 -05:00
mutex.c kernel: Fix nano_internal.h inclusion 2018-02-16 10:44:29 -05:00
pipes.c kernel: Fix nano_internal.h inclusion 2018-02-16 10:44:29 -05:00
poll.c kernel: Fix nano_internal.h inclusion 2018-02-16 10:44:29 -05:00
queue.c kernel: Fix nano_internal.h inclusion 2018-02-16 10:44:29 -05:00
sched.c kernel: Fix nano_internal.h inclusion 2018-02-16 10:44:29 -05:00
sem.c kernel: Fix nano_internal.h inclusion 2018-02-16 10:44:29 -05:00
stack.c kernel: Fix nano_internal.h inclusion 2018-02-16 10:44:29 -05:00
sys_clock.c kernel: Allow late processing of timeouts 2018-01-29 23:18:13 -05:00
system_work_q.c
thread_abort.c kernel: include: rename nano_internal.h to kernel_internal.h 2018-01-31 10:07:21 -06:00
thread.c kernel: Fix nano_internal.h inclusion 2018-02-16 10:44:29 -05:00
timer.c kernel: Fix nano_internal.h inclusion 2018-02-16 10:44:29 -05:00
userspace_handler.c userspace: assign thread IDs at build time 2017-11-03 11:29:23 -07:00
userspace.c dma: add system calls for dma_start/dma_stop 2018-02-12 19:24:25 -05:00
version.c
work_q.c work_q: Correctly clear pending flag in delayed work queue, update docs 2018-02-13 18:08:57 -05:00