88 lines · c
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 9enum thp_enabled {10 THP_NEVER,11 THP_ALWAYS,12 THP_INHERIT,13 THP_MADVISE,14};15 16enum 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 24enum 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 2035 36struct hugepages_settings {37 enum thp_enabled enabled;38};39 40struct 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 50struct shmem_hugepages_settings {51 enum shmem_enabled enabled;52};53 54struct 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 65int read_file(const char *path, char *buf, size_t buflen);66int write_file(const char *path, const char *buf, size_t buflen);67const unsigned long read_num(const char *path);68void write_num(const char *path, unsigned long num);69 70int thp_read_string(const char *name, const char * const strings[]);71void thp_write_string(const char *name, const char *val);72const unsigned long thp_read_num(const char *name);73void thp_write_num(const char *name, unsigned long num);74 75void thp_write_settings(struct thp_settings *settings);76void thp_read_settings(struct thp_settings *settings);77struct thp_settings *thp_current_settings(void);78void thp_push_settings(struct thp_settings *settings);79void thp_pop_settings(void);80void thp_restore_settings(void);81void thp_save_settings(void);82 83void thp_set_read_ahead_path(char *path);84unsigned long thp_supported_orders(void);85unsigned long thp_shmem_supported_orders(void);86 87#endif /* __THP_SETTINGS_H__ */88