CACHE(3) | Library Functions Manual | CACHE(3) |
sys_cache_control
,
sys_icache_invalidate
,
sys_dcache_flush
— cache
control
Standard C Library (libc, -lc)
#include
<libkern/OSCacheControl.h>
int
sys_cache_control
(int
function, void
*start, size_t
len);
void
sys_icache_invalidate
(void
*start, size_t
len);
void
sys_dcache_flush
(void
*start, size_t
len);
These functions operate on every cache line containing one of the len bytes of memory pointed to by start. Normally the operations apply to every processor in the system, but the exact semantics of these operations is platform dependent. They should be used with caution.
sys_cache_control
()
performs the operation specified by function. Refer to
the header file for a list of currently supported functions.
sys_icache_invalidate
()
prepares memory for execution, typically by invalidating the instruction
cache for the indicated range. This should be called after writing machine
instructions to memory, and before executing them. On IA32 processors this
function is a NOP, because their instruction caches are coherent.
sys_dcache_flush
()
writes modified data cache lines to main memory, and then invalidates all
lines in the range being operated on. It can be useful when dealing with
cache incoherent devices or DMA.
sys_cache_control
() returns zero on
success, ENOTSUP if function is not valid.
These functions first appeared in Mac OS 10.5 (Leopard).
September 21, 2006 | Darwin |