cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

cputopo.h (1903B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2#ifndef __PERF_CPUTOPO_H
      3#define __PERF_CPUTOPO_H
      4
      5#include <linux/types.h>
      6
      7struct cpu_topology {
      8	/* The number of unique package_cpus_lists below. */
      9	u32	  package_cpus_lists;
     10	/* The number of unique die_cpu_lists below. */
     11	u32	  die_cpus_lists;
     12	/* The number of unique core_cpu_lists below. */
     13	u32	  core_cpus_lists;
     14	/*
     15	 * An array of strings where each string is unique and read from
     16	 * /sys/devices/system/cpu/cpuX/topology/package_cpus_list. From the ABI
     17	 * each of these is a human-readable list of CPUs sharing the same
     18	 * physical_package_id. The format is like 0-3, 8-11, 14,17.
     19	 */
     20	const char **package_cpus_list;
     21	/*
     22	 * An array of string where each string is unique and from
     23	 * /sys/devices/system/cpu/cpuX/topology/die_cpus_list. From the ABI
     24	 * each of these is a human-readable list of CPUs within the same die.
     25	 * The format is like 0-3, 8-11, 14,17.
     26	 */
     27	const char **die_cpus_list;
     28	/*
     29	 * An array of string where each string is unique and from
     30	 * /sys/devices/system/cpu/cpuX/topology/core_cpus_list. From the ABI
     31	 * each of these is a human-readable list of CPUs within the same
     32	 * core. The format is like 0-3, 8-11, 14,17.
     33	 */
     34	const char **core_cpus_list;
     35};
     36
     37struct numa_topology_node {
     38	char		*cpus;
     39	u32		 node;
     40	u64		 mem_total;
     41	u64		 mem_free;
     42};
     43
     44struct numa_topology {
     45	u32				nr;
     46	struct numa_topology_node	nodes[];
     47};
     48
     49struct hybrid_topology_node {
     50	char		*pmu_name;
     51	char		*cpus;
     52};
     53
     54struct hybrid_topology {
     55	u32				nr;
     56	struct hybrid_topology_node	nodes[];
     57};
     58
     59struct cpu_topology *cpu_topology__new(void);
     60void cpu_topology__delete(struct cpu_topology *tp);
     61
     62struct numa_topology *numa_topology__new(void);
     63void numa_topology__delete(struct numa_topology *tp);
     64
     65struct hybrid_topology *hybrid_topology__new(void);
     66void hybrid_topology__delete(struct hybrid_topology *tp);
     67
     68#endif /* __PERF_CPUTOPO_H */