File Index
Files and directories
Sign in
FILE

lru_gen_util.h

File preview with syntax highlighting.

linux-6.19.14/tools/testing/selftests/kvm/include/lru_gen_util.h C
 1/* SPDX-License-Identifier: GPL-2.0-only */
 2/*
 3 * Tools for integrating with lru_gen, like parsing the lru_gen debugfs output.
 4 *
 5 * Copyright (C) 2025, Google LLC.
 6 */
 7#ifndef SELFTEST_KVM_LRU_GEN_UTIL_H
 8#define SELFTEST_KVM_LRU_GEN_UTIL_H
 9
10#include <inttypes.h>
11#include <limits.h>
12#include <stdlib.h>
13
14#include "test_util.h"
15
16#define MAX_NR_GENS 16 /* MAX_NR_GENS in include/linux/mmzone.h */
17#define MAX_NR_NODES 4 /* Maximum number of nodes supported by the test */
18
19#define LRU_GEN_DEBUGFS "/sys/kernel/debug/lru_gen"
20#define LRU_GEN_ENABLED_PATH "/sys/kernel/mm/lru_gen/enabled"
21#define LRU_GEN_ENABLED 1
22#define LRU_GEN_MM_WALK 2
23
24struct generation_stats {
25	int gen;
26	long age_ms;
27	long nr_anon;
28	long nr_file;
29};
30
31struct node_stats {
32	int node;
33	int nr_gens; /* Number of populated gens entries. */
34	struct generation_stats gens[MAX_NR_GENS];
35};
36
37struct memcg_stats {
38	unsigned long memcg_id;
39	int nr_nodes; /* Number of populated nodes entries. */
40	struct node_stats nodes[MAX_NR_NODES];
41};
42
43void lru_gen_read_memcg_stats(struct memcg_stats *stats, const char *memcg);
44long lru_gen_sum_memcg_stats(const struct memcg_stats *stats);
45long lru_gen_sum_memcg_stats_for_gen(int gen, const struct memcg_stats *stats);
46void lru_gen_do_aging(struct memcg_stats *stats, const char *memcg);
47int lru_gen_find_generation(const struct memcg_stats *stats,
48			    unsigned long total_pages);
49bool lru_gen_usable(void);
50
51#endif /* SELFTEST_KVM_LRU_GEN_UTIL_H */
~/ Read-only file preview.