xref: /kernel/linux/linux-6.6/tools/perf/util/cacheline.c
  • Home
  • History
  • Annotate Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
  • only in /kernel/linux/linux-6.6/tools/perf/util/
162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ci#include "cacheline.h"
362306a36Sopenharmony_ci#include <unistd.h>
462306a36Sopenharmony_ci
562306a36Sopenharmony_ci#ifdef _SC_LEVEL1_DCACHE_LINESIZE
662306a36Sopenharmony_ci#define cache_line_size(cacheline_sizep) *cacheline_sizep = sysconf(_SC_LEVEL1_DCACHE_LINESIZE)
762306a36Sopenharmony_ci#else
862306a36Sopenharmony_ci#include <api/fs/fs.h>
962306a36Sopenharmony_ci#include "debug.h"
1062306a36Sopenharmony_cistatic void cache_line_size(int *cacheline_sizep)
1162306a36Sopenharmony_ci{
1262306a36Sopenharmony_ci	if (sysfs__read_int("devices/system/cpu/cpu0/cache/index0/coherency_line_size", cacheline_sizep))
1362306a36Sopenharmony_ci		pr_debug("cannot determine cache line size");
1462306a36Sopenharmony_ci}
1562306a36Sopenharmony_ci#endif
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ciint cacheline_size(void)
1862306a36Sopenharmony_ci{
1962306a36Sopenharmony_ci	static int size;
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ci	if (!size)
2262306a36Sopenharmony_ci		cache_line_size(&size);
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ci	return size;
2562306a36Sopenharmony_ci}
26

Indexes created Thu Nov 07 10:32:03 CST 2024