Loading...
Searching...
No Matches
Cache Consistency
Base API

Various functions for cache consistency. More...

Collaboration diagram for Cache Consistency:

## Functions

L4_BEGIN_DECLS 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.

## Detailed Description

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.

## Function Documentation

## l4_cache_clean_data()

L4_BEGIN_DECLS 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 70 of file cache.h.

References L4_NOTHROW.

## 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 94 of file cache.h.

References L4_NOTHROW.

## 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 102 of file cache.h.

References L4_NOTHROW.

## 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 78 of file cache.h.

References L4_NOTHROW.

## 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 86 of file cache.h.

References L4_NOTHROW.