Various functions for cache consistency.
More...
|
int | l4_cache_clean_data (unsigned long start, unsigned long end) L4_NOTHROW |
| Cache clean a range in D-cache; writes back to PoC.
|
|
int | l4_cache_flush_data (unsigned long start, unsigned long end) L4_NOTHROW |
| Cache flush a range; writes back to PoC.
|
|
int | l4_cache_inv_data (unsigned long start, unsigned long end) L4_NOTHROW |
| Cache invalidate a range; might write back to PoC.
|
|
int | l4_cache_coherent (unsigned long start, unsigned long end) L4_NOTHROW |
| Make memory coherent between I-cache and D-cache; writes back to PoU.
|
|
int | l4_cache_dma_coherent (unsigned long start, unsigned long end) L4_NOTHROW |
| Make memory coherent for use with external memory; writes back to PoC.
|
|
int | l4_cache_dma_coherent_full (void) L4_NOTHROW |
| Make memory coherent for use with external memory; writes back to PoC.
|
|
Various functions for cache consistency.
These functions shall be used to ensure that
- all blocks (e.g. CPU cores, devices, DMA engines) are guaranteed to see the same copy of a memory location (Point of Coherency – PoC),
- instruction and data caches of a core are guaranteed to see the same copy of a memory location (Point of Unification – PoU).
Certain functions are NOPs on certain architectures, for example on Intel it's not necessary to explicitly make caches coherent to PoU.
◆ l4_cache_clean_data()
int l4_cache_clean_data |
( |
unsigned long |
start, |
|
|
unsigned long |
end |
|
) |
| |
|
inline |
Cache clean a range in D-cache; writes back to PoC.
- Parameters
-
start | Start of range (inclusive) |
end | End of range (exclusive) |
- Return values
-
0 | on success |
-EFAULT | in the case of an unresolved page fault in the given area |
Writes back any dirty cache lines in the range but leaves them in the cache and marks the cached copies clean.
- Examples
- examples/libs/l4re/c++/shared_ds/ds_clnt.cc.
Definition at line 81 of file cache.h.
◆ l4_cache_coherent()
int l4_cache_coherent |
( |
unsigned long |
start, |
|
|
unsigned long |
end |
|
) |
| |
|
inline |
Make memory coherent between I-cache and D-cache; writes back to PoU.
- Parameters
-
start | Start of range (inclusive) |
end | End of range (exclusive) |
- Return values
-
0 | on success |
-EFAULT | in the case of an unresolved page fault in the given area |
Definition at line 105 of file cache.h.
◆ l4_cache_dma_coherent()
int l4_cache_dma_coherent |
( |
unsigned long |
start, |
|
|
unsigned long |
end |
|
) |
| |
|
inline |
Make memory coherent for use with external memory; writes back to PoC.
- Parameters
-
start | Start of range (inclusive) |
end | End of range (exclusive) |
- Return values
-
0 | on success |
-EFAULT | in the case of an unresolved page fault in the given area |
Definition at line 113 of file cache.h.
◆ l4_cache_flush_data()
int l4_cache_flush_data |
( |
unsigned long |
start, |
|
|
unsigned long |
end |
|
) |
| |
|
inline |
Cache flush a range; writes back to PoC.
- Parameters
-
start | Start of range (inclusive) |
end | End of range (exclusive) |
- Return values
-
0 | on success |
-EFAULT | in the case of an unresolved page fault in the given area |
Writes back any dirty cache lines and invalidates all cache entries in the range.
Definition at line 89 of file cache.h.
◆ l4_cache_inv_data()
int l4_cache_inv_data |
( |
unsigned long |
start, |
|
|
unsigned long |
end |
|
) |
| |
|
inline |
Cache invalidate a range; might write back to PoC.
- Parameters
-
start | Start of range (inclusive) |
end | End of range (exclusive) |
- Return values
-
0 | on success |
-EFAULT | in the case of an unresolved page fault in the given area |
Invalidates all cache entries in the range but does not necessarily write back dirty cache lines.
- Note
- Implementations may choose to write back dirty lines nonetheless if this is more efficient.
Definition at line 97 of file cache.h.