10Sduke// SPDX-License-Identifier: GPL-2.0 22362Sohair#include "cacheline.h" 30Sduke#include <unistd.h> 40Sduke 50Sduke#ifdef _SC_LEVEL1_DCACHE_LINESIZE 60Sduke#define cache_line_size(cacheline_sizep) *cacheline_sizep = sysconf(_SC_LEVEL1_DCACHE_LINESIZE) 70Sduke#else 80Sduke#include <api/fs/fs.h> 90Sduke#include "debug.h" 100Sdukestatic void cache_line_size(int *cacheline_sizep) 110Sduke{ 120Sduke if (sysfs__read_int("devices/system/cpu/cpu0/cache/index0/coherency_line_size", cacheline_sizep)) 130Sduke pr_debug("cannot determine cache line size"); 140Sduke} 150Sduke#endif 160Sduke 170Sdukeint cacheline_size(void) 180Sduke{ 192362Sohair static int size; 202362Sohair 212362Sohair if (!size) 220Sduke cache_line_size(&size); 230Sduke 240Sduke return size; 250Sduke} 260Sduke