genode/repos/base/include
Martin Stein ec6c19a487 base: memory barriers in lock implementations
The memory barrier prevents the compiler from changing the program order
of memory accesses in such a way that accesses to the guarded resource
get outside the guarded stage. As cmpxchg() defines the start of the
guarded stage it also represents an effective memory barrier.

On x86, the architecture ensures to not reorder writes with older reads,
writes to memory with other writes (except in cases that are not
relevant for our locks), or read/write instructions with I/O
instructions, locked instructions, and serializing instructions.

However on ARM, the architectural memory model allows not only that
memory accesses take local effect in another order as their program
order but also that different observers (components that can access
memory like data-busses, TLBs and branch predictors) observe these
effects each in another order. Thus, a correct program order isn't
sufficient for a correct observation order. An additional architectural
preservation of the memory barrier is needed to achieve this.

Fixes #692
2014-11-28 12:02:34 +01:00
..
32bit/base Move repositories to 'repos/' subdirectory 2014-05-14 16:08:00 +02:00
64bit/base Move repositories to 'repos/' subdirectory 2014-05-14 16:08:00 +02:00
arm base: memory barriers in lock implementations 2014-11-28 12:02:34 +01:00
arm_v5/cpu base: memory barriers in lock implementations 2014-11-28 12:02:34 +01:00
arm_v6/cpu base: memory barriers in lock implementations 2014-11-28 12:02:34 +01:00
arm_v7/cpu base: memory barriers in lock implementations 2014-11-28 12:02:34 +01:00
base base: document specifics of Slab::alloc() 2014-11-12 14:44:16 +01:00
cap_session Move repositories to 'repos/' subdirectory 2014-05-14 16:08:00 +02:00
cpu base: interface for D- and I-cache synchronization 2014-05-27 11:14:45 +02:00
cpu_session Move repositories to 'repos/' subdirectory 2014-05-14 16:08:00 +02:00
dataspace Move repositories to 'repos/' subdirectory 2014-05-14 16:08:00 +02:00
drivers hw: fix scheduler timing on prio preemption 2014-11-14 12:00:45 +01:00
io_mem_session Move repositories to 'repos/' subdirectory 2014-05-14 16:08:00 +02:00
io_port_session Move repositories to 'repos/' subdirectory 2014-05-14 16:08:00 +02:00
irq_session Move repositories to 'repos/' subdirectory 2014-05-14 16:08:00 +02:00
log_session Move repositories to 'repos/' subdirectory 2014-05-14 16:08:00 +02:00
pager Move repositories to 'repos/' subdirectory 2014-05-14 16:08:00 +02:00
parent Move repositories to 'repos/' subdirectory 2014-05-14 16:08:00 +02:00
pd_session Move repositories to 'repos/' subdirectory 2014-05-14 16:08:00 +02:00
platform hw/rpi: USB SOF interrupt filtering 2014-10-13 14:52:43 +02:00
platform_exynos5 hw: re-organize file structure 2014-08-15 10:19:48 +02:00
ram_session base: introduce caching attributes (fix #1184) 2014-06-26 10:57:26 +02:00
rm_session Move repositories to 'repos/' subdirectory 2014-05-14 16:08:00 +02:00
rom_session Add Rom_session::update 2014-08-11 15:55:31 +02:00
root Move repositories to 'repos/' subdirectory 2014-05-14 16:08:00 +02:00
session Move repositories to 'repos/' subdirectory 2014-05-14 16:08:00 +02:00
signal_session Move repositories to 'repos/' subdirectory 2014-05-14 16:08:00 +02:00
thread Move repositories to 'repos/' subdirectory 2014-05-14 16:08:00 +02:00
trace_session Move repositories to 'repos/' subdirectory 2014-05-14 16:08:00 +02:00
util base: add 'String::operator!=' 2014-10-13 15:21:53 +02:00
x86/cpu base: memory barriers in lock implementations 2014-11-28 12:02:34 +01:00
x86_32/cpu Move repositories to 'repos/' subdirectory 2014-05-14 16:08:00 +02:00
x86_64/cpu Move repositories to 'repos/' subdirectory 2014-05-14 16:08:00 +02:00
README Move repositories to 'repos/' subdirectory 2014-05-14 16:08:00 +02:00

This directory contains include files of interfaces that are exported
by components to be used by other components. Each subdirectory corresponds
to the component exporting the interface.