]> Git Repo - J-linux.git/blob - tools/testing/selftests/mm/thp_settings.h
Merge tag 'vfs-6.13-rc7.fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs
[J-linux.git] / tools / testing / selftests / mm / thp_settings.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef __THP_SETTINGS_H__
3 #define __THP_SETTINGS_H__
4
5 #include <stdbool.h>
6 #include <stddef.h>
7 #include <stdint.h>
8
9 enum thp_enabled {
10         THP_NEVER,
11         THP_ALWAYS,
12         THP_INHERIT,
13         THP_MADVISE,
14 };
15
16 enum thp_defrag {
17         THP_DEFRAG_ALWAYS,
18         THP_DEFRAG_DEFER,
19         THP_DEFRAG_DEFER_MADVISE,
20         THP_DEFRAG_MADVISE,
21         THP_DEFRAG_NEVER,
22 };
23
24 enum shmem_enabled {
25         SHMEM_NEVER,
26         SHMEM_ALWAYS,
27         SHMEM_WITHIN_SIZE,
28         SHMEM_ADVISE,
29         SHMEM_INHERIT,
30         SHMEM_DENY,
31         SHMEM_FORCE,
32 };
33
34 #define NR_ORDERS 20
35
36 struct hugepages_settings {
37         enum thp_enabled enabled;
38 };
39
40 struct khugepaged_settings {
41         bool defrag;
42         unsigned int alloc_sleep_millisecs;
43         unsigned int scan_sleep_millisecs;
44         unsigned int max_ptes_none;
45         unsigned int max_ptes_swap;
46         unsigned int max_ptes_shared;
47         unsigned long pages_to_scan;
48 };
49
50 struct shmem_hugepages_settings {
51         enum shmem_enabled enabled;
52 };
53
54 struct thp_settings {
55         enum thp_enabled thp_enabled;
56         enum thp_defrag thp_defrag;
57         enum shmem_enabled shmem_enabled;
58         bool use_zero_page;
59         struct khugepaged_settings khugepaged;
60         unsigned long read_ahead_kb;
61         struct hugepages_settings hugepages[NR_ORDERS];
62         struct shmem_hugepages_settings shmem_hugepages[NR_ORDERS];
63 };
64
65 int read_file(const char *path, char *buf, size_t buflen);
66 int write_file(const char *path, const char *buf, size_t buflen);
67 const unsigned long read_num(const char *path);
68 void write_num(const char *path, unsigned long num);
69
70 int thp_read_string(const char *name, const char * const strings[]);
71 void thp_write_string(const char *name, const char *val);
72 const unsigned long thp_read_num(const char *name);
73 void thp_write_num(const char *name, unsigned long num);
74
75 void thp_write_settings(struct thp_settings *settings);
76 void thp_read_settings(struct thp_settings *settings);
77 struct thp_settings *thp_current_settings(void);
78 void thp_push_settings(struct thp_settings *settings);
79 void thp_pop_settings(void);
80 void thp_restore_settings(void);
81 void thp_save_settings(void);
82
83 void thp_set_read_ahead_path(char *path);
84 unsigned long thp_supported_orders(void);
85 unsigned long thp_shmem_supported_orders(void);
86
87 #endif /* __THP_SETTINGS_H__ */
This page took 0.032271 seconds and 4 git commands to generate.