zephyr/arch/arm/core
Andy Ross 9098a45c84 kernel: New timeslicing implementation
Instead of checking every time we hit the low-level context switch
path to see if the new thread has a "partner" with which it needs to
share time, just run the slice timer always and reset it from the
scheduler at the points where it has already decided a switch needs to
happen.  In TICKLESS_KERNEL situations, we pay the cost of extra timer
interrupts at ~10Hz or whatever, which is low (note also that this
kind of regular wakeup architecture is required on SMP anyway so the
scheduler can "notice" threads scheduled by other CPUs).  Advantages:

1. Much simpler logic.  Significantly smaller code.  No variance or
   dependence on tickless modes or timer driver (beyond setting a
   simple timeout).

2. No arch-specific assembly integration with _Swap() needed

3. Better performance on many workloads, as the accounting now happens
   at most once per timer interrupt (~5 Hz) and true rescheduling and
   not on every unrelated context switch and interrupt return.

4. It's SMP-safe.  The previous scheme kept the slice ticks as a
   global variable, which was an unnoticed bug.

Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2018-10-16 15:03:10 -04:00
..
cortex_m system_timer.h: Remove ASMLANGUAGE guard 2018-10-16 15:03:10 -04:00
offsets
CMakeLists.txt arch: arm: Make ARM_MPU the sole option controlling MPU usage 2018-09-20 14:16:50 +02:00
Kconfig arch: arm: Make ARM_MPU the sole option controlling MPU usage 2018-09-20 14:16:50 +02:00
__aeabi_atexit.c
cpu_idle.S kernel: Using the same paramenters names in a specific function 2018-09-28 07:58:19 +05:30
exc_exit.S kernel: New timeslicing implementation 2018-10-16 15:03:10 -04:00
fatal.c arch: Add LOG_PANIC to fault handlers 2018-09-27 13:11:26 +05:30
fault.c arch: Add LOG_PANIC to fault handlers 2018-09-27 13:11:26 +05:30
fault_s.S
irq_init.c
irq_manage.c systemview: add support natively using tracing hooks 2018-08-21 05:45:47 -07:00
irq_offload.c
irq_relay.S system_timer.h: Remove ASMLANGUAGE guard 2018-10-16 15:03:10 -04:00
isr_wrapper.S systemview: add support natively using tracing hooks 2018-08-21 05:45:47 -07:00
swap.c kernel: swap: Fix __swap signature 2018-09-14 16:55:37 -04:00
swap_helper.S systemview: add support natively using tracing hooks 2018-08-21 05:45:47 -07:00
sys_fatal_error_handler.c
thread.c arch: arm: remove un-necessary inclusion of <string.h> 2018-09-26 18:26:03 -05:00
thread_abort.c kernel: Explicitly ignoring _Swap return 2018-09-14 16:55:37 -04:00
userspace.S arch: arm: re-program MPU stack guard upon userspace enter 2018-10-15 12:19:09 -05:00