0001
0002 #include "cacheline.h"
0003 #include <unistd.h>
0004
0005 #ifdef _SC_LEVEL1_DCACHE_LINESIZE
0006 #define cache_line_size(cacheline_sizep) *cacheline_sizep = sysconf(_SC_LEVEL1_DCACHE_LINESIZE)
0007 #else
0008 #include <api/fs/fs.h>
0009 #include "debug.h"
0010 static void cache_line_size(int *cacheline_sizep)
0011 {
0012 if (sysfs__read_int("devices/system/cpu/cpu0/cache/index0/coherency_line_size", cacheline_sizep))
0013 pr_debug("cannot determine cache line size");
0014 }
0015 #endif
0016
0017 int cacheline_size(void)
0018 {
0019 static int size;
0020
0021 if (!size)
0022 cache_line_size(&size);
0023
0024 return size;
0025 }