zephyr/include
Andy Ross f6d32ab0a4 kernel: Add cache coherence management framework
Zephyr SMP kernels need to be able to run on architectures with
incoherent caches.  Naive implementation of synchronization on such
architectures requires extensive cache flushing (e.g. flush+invalidate
everything on every spin lock operation, flush on every unlock!) and
is a performance problem.

Instead, many of these systems will have access to separate "coherent"
(usually uncached) and "incoherent" regions of memory.  Where this is
available, place all writable data sections by default into the
coherent region.  An "__incoherent" attribute flag is defined for data
regions that are known to be CPU-local and which should use the cache.
By default, this is used for stack memory.

Stack memory will be incoherent by default, as by definition it is
local to its current thread.  This requires special cache management
on context switch, so an arch API has been added for that.

Also, when enabled, add assertions to strategic places to ensure that
shared kernel data is indeed coherent.  We check thread objects, the
_kernel struct, waitq's, timeouts and spinlocks.  In practice almost
all kernel synchronization is built on top of these structures, and
any shared data structs will contain at least one of them.

Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2020-10-21 06:38:53 -04:00
..
app_memory userspace: fix k_mem_domain_destroy() 2020-10-20 09:37:49 -07:00
arch arch: arm64: Remove new thread entry wrapper 2020-10-06 10:25:56 -04:00
audio device: Const-ify all device driver instance pointers 2020-09-02 13:48:13 +02:00
bluetooth Bluetooth: controller: HCI stubs for BIG commands 2020-10-19 18:59:49 +02:00
canbus subsys: canopen: Add a wrapper to avoid passing device to CO_init 2020-09-02 13:48:13 +02:00
cmsis_rtos_v1
cmsis_rtos_v2
console device: Const-ify all device driver instance pointers 2020-09-02 13:48:13 +02:00
crypto device: Const-ify all device driver instance pointers 2020-09-02 13:48:13 +02:00
data json: Add top-level array encoding support 2020-06-19 18:21:27 +02:00
debug debug: x86: Add gdbstub for X86 2020-09-02 20:54:57 -04:00
devicetree devicetree: rename header to reflect that io-channels are not ADC-only 2020-10-19 17:21:33 +02:00
dfu dfu: img_util: Add flash integrity check 2020-09-03 17:56:02 +02:00
disk device: Const-ify all device driver instance pointers 2020-09-02 13:48:13 +02:00
display device: Const-ify all device driver instance pointers 2020-09-02 13:48:13 +02:00
drivers drivers: gsm: Add GSM modem device name 2020-10-19 18:29:02 +02:00
dt-bindings include: Add NXP LPC clock control driver 2020-10-15 11:17:24 -05:00
fs fs: Improve documentation for FS API 2020-10-13 13:16:02 +02:00
linker kernel: Add cache coherence management framework 2020-10-21 06:38:53 -04:00
logging logging: fix if else if constructs missing final else 2020-10-07 23:05:18 -07:00
lorawan lorawan,lora: fix C++ compilation/linking errors 2020-10-15 11:08:07 +02:00
mgmt mgmt/osdp: Add support for Secure Channel 2020-10-09 11:45:58 +02:00
net openthread: add openthread_api_mutex_try_lock() 2020-10-20 16:39:22 +03:00
posix include/posix: fix extern "C" placement 2020-10-13 10:05:30 -05:00
power zephyr: replace zephyr integer types with C99 types 2020-06-08 08:23:57 -05:00
random random: Add syscalls for random subsystem 2020-07-08 21:05:36 -04:00
settings settings: disallow modifying the content of a static subtree name 2020-07-27 19:03:44 +02:00
shell shell: documentation update 2020-10-08 10:12:25 -04:00
stats zephyr: replace zephyr integer types with C99 types 2020-06-08 08:23:57 -05:00
storage dts: remove legacy macro support 2020-10-09 08:45:38 -05:00
sys kernel: Add cache coherence management framework 2020-10-21 06:38:53 -04:00
timing timing: introduce timing functions as a generic feature 2020-09-05 13:28:38 -05:00
toolchain toolchain: define __no_optimization attribute across toolchains 2020-10-06 11:41:23 -04:00
tracing tracing: trace mutex/semaphore using dedicated calls 2020-08-24 13:21:12 +02:00
usb code-guideline: Fixing code violation 10.4 Rule 2020-10-01 17:13:29 -04:00
zephyr zephyr: Use deprecated instead of legacy for Kconfig int types 2020-06-09 06:49:56 -05:00
cache.h syscalls: Add system call for cache flush & invalidate 2020-08-04 17:26:45 -04:00
device.h device: Const-ify all device driver instance pointers 2020-09-02 13:48:13 +02:00
devicetree.h devicetree: add a name for an invalid node identifier 2020-10-19 18:14:11 +02:00
ec_host_cmd.h include: remove enum build assert 2020-10-02 11:44:39 +02:00
emul.h device: Const-ify all device driver instance pointers 2020-09-02 13:48:13 +02:00
exc_handle.h
fatal.h
generated_dts_board.h
init.h device: Const-ify all device driver instance pointers 2020-09-02 13:48:13 +02:00
irq_nextlevel.h device: Const-ify all device driver instance pointers 2020-09-02 13:48:13 +02:00
irq_offload.h irq: Change offload API to take a constant parameter 2020-09-02 13:48:13 +02:00
irq.h irq: Change dynamic API to take a constant parameter 2020-09-02 13:48:13 +02:00
kernel_includes.h kernel: move kernel object APIs to own header 2020-10-12 12:21:46 -04:00
kernel_structs.h kernel: move k_heap definition 2020-10-06 19:56:51 -04:00
kernel_version.h zephyr: replace zephyr integer types with C99 types 2020-06-08 08:23:57 -05:00
kernel.h kernel: move kernel object APIs to own header 2020-10-12 12:21:46 -04:00
mempool_heap.h sys_heap: reduce the size of struct z_heap_bucket by half 2020-06-21 19:25:35 +02:00
mempool_sys.h zephyr: replace zephyr integer types with C99 types 2020-06-08 08:23:57 -05:00
ptp_clock.h device: Const-ify all device driver instance pointers 2020-09-02 13:48:13 +02:00
sched_priq.h
shared_irq.h device: Const-ify all device driver instance pointers 2020-09-02 13:48:13 +02:00
spinlock.h kernel: Add cache coherence management framework 2020-10-21 06:38:53 -04:00
sw_isr_table.h irq: Change dynamic API to take a constant parameter 2020-09-02 13:48:13 +02:00
sys_clock.h kernel/sys_clock.h: Remove deprecated macros 2020-10-04 14:12:27 -07:00
syscall_handler.h device: Const-ify all device driver instance pointers 2020-09-02 13:48:13 +02:00
syscall.h
timeout_q.h kernel: timer: update _timeout API for const correctness 2020-10-02 11:29:14 +02:00
toolchain.h ARC: toolchain: handle difference in macros for MWDT and ARC GNU 2020-09-05 10:22:56 -05:00
wait_q.h
zephyr.h