hugetlb: remove sysctl.c intrusion
Subsystems (2)
PATCH 5/7 hugetlb: remove sysctl.c intrusion
This patch removes hugetlb's intrusion into kernel/sysctl.c
arch/i386/mm/hugetlbpage.c | 7 +++++++ include/linux/hugetlb.h | 7 +++++++ kernel/sysctl.c | 14 ++------------ 3 files changed, 16 insertions(+), 12 deletions(-)
arch/i386/mm/hugetlbpage.c +7 -0
@@ -513,6 +513,13 @@ int set_hugetlb_mem_size(int count)return (int ) htlbzone_pages; } +int hugetlb_sysctl_handler (ctl_table *table,int write,struct file *file,void *buffer,size_t *length) +{ +proc_dointvec (table, write, file, buffer, length); + htlbpage_max =set_hugetlb_mem_size (htlbpage_max); +return 0 ; +} +static int __init hugetlb_setup (char *s) {if (sscanf (s,"%d" , &htlbpage_max) <=0 )
include/linux/hugetlb.h +7 -0
@@ -2,17 +2,24 @@#define _LINUX_HUGETLB_H#ifdef CONFIG_HUGETLB_PAGE + +struct ctl_table ; +static inline int is_vm_hugetlb_page (struct vm_area_struct *vma) {return vma->vm_flags &VM_HUGETLB ; } +int hugetlb_sysctl_handler (struct ctl_table *,int ,struct file *,void *,size_t *);int copy_hugetlb_page_range (struct mm_struct *,struct mm_struct *,struct vm_area_struct *);int follow_hugetlb_page (struct mm_struct *,struct vm_area_struct *,struct page **,struct vm_area_struct **,unsigned long *,int *,int );void zap_hugepage_range (struct vm_area_struct *,unsigned long ,unsigned long );void unmap_hugepage_range (struct vm_area_struct *,unsigned long ,unsigned long );int hugetlb_prefault (struct address_space *,struct vm_area_struct *);void huge_page_release (struct page *); + +extern int htlbpage_max; +#else /* !CONFIG_HUGETLB_PAGE */ static inline int is_vm_hugetlb_page (struct vm_area_struct *vma) {
kernel/sysctl.c +2 -12
@@ -31,7 +31,7 @@#include <linux/sysrq.h> #include <linux/highuid.h> #include <linux/writeback.h> - +#include <linux/hugetlb.h> #include <asm/uaccess.h> #ifdef CONFIG_ROOT_NFS
@@ -99,11 +99,6 @@ int proc_dol2crvec(ctl_table *table, intextern int acct_parm[];#endif -#ifdef CONFIG_HUGETLB_PAGE -extern int htlbpage_max; -extern int set_hugetlb_mem_size (int ); -#endif -static int parse_table (int *,int ,void *,size_t *,void *,size_t ,ctl_table *,void **); static int proc_doutsstring(ctl_table *table, int write, struct file *filp,
@@ -315,8 +310,7 @@ static ctl_table vm_table[] = { 0644, NULL, &proc_dointvec_minmax, &sysctl_intvec, NULL, &zero, &one_hundred }, #ifdef CONFIG_HUGETLB_PAGE - {VM_HUGETLB_PAGES, "nr_hugepages", &htlbpage_max, sizeof(int), 0644, NULL, - &proc_dointvec}, + {VM_HUGETLB_PAGES, "nr_hugepages", &htlbpage_max, sizeof(int), 0644, NULL, &hugetlb_sysctl_handler}, #endif {0} };
@@ -907,10 +901,6 @@ static int do_proc_dointvec(ctl_table *t val = -val; buffer += len; left -= len; -#ifdef CONFIG_HUGETLB_PAGE -if (i == &htlbpage_max) - val =set_hugetlb_mem_size (val); -#endif switch (op) {case OP_SET : *i = val;break ;case OP_AND : *i &= val;break ;