at v6.13 1.8 kB view raw
1/* SPDX-License-Identifier: GPL-2.0 */ 2#ifndef _LINUX_KHUGEPAGED_H 3#define _LINUX_KHUGEPAGED_H 4 5extern unsigned int khugepaged_max_ptes_none __read_mostly; 6#ifdef CONFIG_TRANSPARENT_HUGEPAGE 7extern struct attribute_group khugepaged_attr_group; 8 9extern int khugepaged_init(void); 10extern void khugepaged_destroy(void); 11extern int start_stop_khugepaged(void); 12extern void __khugepaged_enter(struct mm_struct *mm); 13extern void __khugepaged_exit(struct mm_struct *mm); 14extern void khugepaged_enter_vma(struct vm_area_struct *vma, 15 unsigned long vm_flags); 16extern void khugepaged_min_free_kbytes_update(void); 17extern bool current_is_khugepaged(void); 18#ifdef CONFIG_SHMEM 19extern int collapse_pte_mapped_thp(struct mm_struct *mm, unsigned long addr, 20 bool install_pmd); 21#else 22static inline int collapse_pte_mapped_thp(struct mm_struct *mm, 23 unsigned long addr, bool install_pmd) 24{ 25 return 0; 26} 27#endif 28 29static inline void khugepaged_fork(struct mm_struct *mm, struct mm_struct *oldmm) 30{ 31 if (test_bit(MMF_VM_HUGEPAGE, &oldmm->flags)) 32 __khugepaged_enter(mm); 33} 34 35static inline void khugepaged_exit(struct mm_struct *mm) 36{ 37 if (test_bit(MMF_VM_HUGEPAGE, &mm->flags)) 38 __khugepaged_exit(mm); 39} 40#else /* CONFIG_TRANSPARENT_HUGEPAGE */ 41static inline void khugepaged_fork(struct mm_struct *mm, struct mm_struct *oldmm) 42{ 43} 44static inline void khugepaged_exit(struct mm_struct *mm) 45{ 46} 47static inline void khugepaged_enter_vma(struct vm_area_struct *vma, 48 unsigned long vm_flags) 49{ 50} 51static inline int collapse_pte_mapped_thp(struct mm_struct *mm, 52 unsigned long addr, bool install_pmd) 53{ 54 return 0; 55} 56 57static inline void khugepaged_min_free_kbytes_update(void) 58{ 59} 60 61static inline bool current_is_khugepaged(void) 62{ 63 return false; 64} 65#endif /* CONFIG_TRANSPARENT_HUGEPAGE */ 66 67#endif /* _LINUX_KHUGEPAGED_H */