diff options
-rw-r--r-- | fs/proc/proc_misc.c | 21 | ||||
-rw-r--r-- | include/linux/slab.h | 5 | ||||
-rw-r--r-- | include/linux/slab_def.h | 3 | ||||
-rw-r--r-- | include/linux/slub_def.h | 2 | ||||
-rw-r--r-- | init/Kconfig | 6 | ||||
-rw-r--r-- | mm/slab.c | 2 | ||||
-rw-r--r-- | mm/slub.c | 11 |
7 files changed, 23 insertions, 27 deletions
diff --git a/fs/proc/proc_misc.c b/fs/proc/proc_misc.c index a11968bc051..3462bfde89f 100644 --- a/fs/proc/proc_misc.c +++ b/fs/proc/proc_misc.c | |||
@@ -410,7 +410,7 @@ static const struct file_operations proc_modules_operations = { | |||
410 | }; | 410 | }; |
411 | #endif | 411 | #endif |
412 | 412 | ||
413 | #ifdef CONFIG_SLAB | 413 | #ifdef CONFIG_SLABINFO |
414 | static int slabinfo_open(struct inode *inode, struct file *file) | 414 | static int slabinfo_open(struct inode *inode, struct file *file) |
415 | { | 415 | { |
416 | return seq_open(file, &slabinfo_op); | 416 | return seq_open(file, &slabinfo_op); |
@@ -451,20 +451,6 @@ static const struct file_operations proc_slabstats_operations = { | |||
451 | #endif | 451 | #endif |
452 | #endif | 452 | #endif |
453 | 453 | ||
454 | #ifdef CONFIG_SLUB | ||
455 | static int slabinfo_open(struct inode *inode, struct file *file) | ||
456 | { | ||
457 | return seq_open(file, &slabinfo_op); | ||
458 | } | ||
459 | |||
460 | static const struct file_operations proc_slabinfo_operations = { | ||
461 | .open = slabinfo_open, | ||
462 | .read = seq_read, | ||
463 | .llseek = seq_lseek, | ||
464 | .release = seq_release, | ||
465 | }; | ||
466 | #endif | ||
467 | |||
468 | static int show_stat(struct seq_file *p, void *v) | 454 | static int show_stat(struct seq_file *p, void *v) |
469 | { | 455 | { |
470 | int i; | 456 | int i; |
@@ -742,15 +728,12 @@ void __init proc_misc_init(void) | |||
742 | #endif | 728 | #endif |
743 | create_seq_entry("stat", 0, &proc_stat_operations); | 729 | create_seq_entry("stat", 0, &proc_stat_operations); |
744 | create_seq_entry("interrupts", 0, &proc_interrupts_operations); | 730 | create_seq_entry("interrupts", 0, &proc_interrupts_operations); |
745 | #ifdef CONFIG_SLAB | 731 | #ifdef CONFIG_SLABINFO |
746 | create_seq_entry("slabinfo",S_IWUSR|S_IRUGO,&proc_slabinfo_operations); | 732 | create_seq_entry("slabinfo",S_IWUSR|S_IRUGO,&proc_slabinfo_operations); |
747 | #ifdef CONFIG_DEBUG_SLAB_LEAK | 733 | #ifdef CONFIG_DEBUG_SLAB_LEAK |
748 | create_seq_entry("slab_allocators", 0 ,&proc_slabstats_operations); | 734 | create_seq_entry("slab_allocators", 0 ,&proc_slabstats_operations); |
749 | #endif | 735 | #endif |
750 | #endif | 736 | #endif |
751 | #ifdef CONFIG_SLUB | ||
752 | create_seq_entry("slabinfo", S_IWUSR|S_IRUGO, &proc_slabinfo_operations); | ||
753 | #endif | ||
754 | create_seq_entry("buddyinfo",S_IRUGO, &fragmentation_file_operations); | 737 | create_seq_entry("buddyinfo",S_IRUGO, &fragmentation_file_operations); |
755 | create_seq_entry("pagetypeinfo", S_IRUGO, &pagetypeinfo_file_ops); | 738 | create_seq_entry("pagetypeinfo", S_IRUGO, &pagetypeinfo_file_ops); |
756 | create_seq_entry("vmstat",S_IRUGO, &proc_vmstat_file_operations); | 739 | create_seq_entry("vmstat",S_IRUGO, &proc_vmstat_file_operations); |
diff --git a/include/linux/slab.h b/include/linux/slab.h index f3a8eecd99f..f62caaad94e 100644 --- a/include/linux/slab.h +++ b/include/linux/slab.h | |||
@@ -271,5 +271,10 @@ static inline void *kzalloc(size_t size, gfp_t flags) | |||
271 | return kmalloc(size, flags | __GFP_ZERO); | 271 | return kmalloc(size, flags | __GFP_ZERO); |
272 | } | 272 | } |
273 | 273 | ||
274 | #ifdef CONFIG_SLABINFO | ||
275 | extern const struct seq_operations slabinfo_op; | ||
276 | ssize_t slabinfo_write(struct file *, const char __user *, size_t, loff_t *); | ||
277 | #endif | ||
278 | |||
274 | #endif /* __KERNEL__ */ | 279 | #endif /* __KERNEL__ */ |
275 | #endif /* _LINUX_SLAB_H */ | 280 | #endif /* _LINUX_SLAB_H */ |
diff --git a/include/linux/slab_def.h b/include/linux/slab_def.h index 32bdc2ffd71..fcc48096ee6 100644 --- a/include/linux/slab_def.h +++ b/include/linux/slab_def.h | |||
@@ -95,7 +95,4 @@ found: | |||
95 | 95 | ||
96 | #endif /* CONFIG_NUMA */ | 96 | #endif /* CONFIG_NUMA */ |
97 | 97 | ||
98 | extern const struct seq_operations slabinfo_op; | ||
99 | ssize_t slabinfo_write(struct file *, const char __user *, size_t, loff_t *); | ||
100 | |||
101 | #endif /* _LINUX_SLAB_DEF_H */ | 98 | #endif /* _LINUX_SLAB_DEF_H */ |
diff --git a/include/linux/slub_def.h b/include/linux/slub_def.h index b7d9408a00f..40801e754af 100644 --- a/include/linux/slub_def.h +++ b/include/linux/slub_def.h | |||
@@ -200,6 +200,4 @@ static __always_inline void *kmalloc_node(size_t size, gfp_t flags, int node) | |||
200 | } | 200 | } |
201 | #endif | 201 | #endif |
202 | 202 | ||
203 | extern const struct seq_operations slabinfo_op; | ||
204 | |||
205 | #endif /* _LINUX_SLUB_DEF_H */ | 203 | #endif /* _LINUX_SLUB_DEF_H */ |
diff --git a/init/Kconfig b/init/Kconfig index 404bbf3699b..b9d11a899b8 100644 --- a/init/Kconfig +++ b/init/Kconfig | |||
@@ -658,6 +658,12 @@ endchoice | |||
658 | 658 | ||
659 | endmenu # General setup | 659 | endmenu # General setup |
660 | 660 | ||
661 | config SLABINFO | ||
662 | bool | ||
663 | depends on PROC_FS | ||
664 | depends on SLAB || SLUB | ||
665 | default y | ||
666 | |||
661 | config RT_MUTEXES | 667 | config RT_MUTEXES |
662 | boolean | 668 | boolean |
663 | select PLIST | 669 | select PLIST |
@@ -4105,7 +4105,7 @@ out: | |||
4105 | schedule_delayed_work(work, round_jiffies_relative(REAPTIMEOUT_CPUC)); | 4105 | schedule_delayed_work(work, round_jiffies_relative(REAPTIMEOUT_CPUC)); |
4106 | } | 4106 | } |
4107 | 4107 | ||
4108 | #ifdef CONFIG_PROC_FS | 4108 | #ifdef CONFIG_SLABINFO |
4109 | 4109 | ||
4110 | static void print_slabinfo_header(struct seq_file *m) | 4110 | static void print_slabinfo_header(struct seq_file *m) |
4111 | { | 4111 | { |
@@ -4127,7 +4127,14 @@ __initcall(slab_sysfs_init); | |||
4127 | /* | 4127 | /* |
4128 | * The /proc/slabinfo ABI | 4128 | * The /proc/slabinfo ABI |
4129 | */ | 4129 | */ |
4130 | #ifdef CONFIG_PROC_FS | 4130 | #ifdef CONFIG_SLABINFO |
4131 | |||
4132 | ssize_t slabinfo_write(struct file *file, const char __user * buffer, | ||
4133 | size_t count, loff_t *ppos) | ||
4134 | { | ||
4135 | return -EINVAL; | ||
4136 | } | ||
4137 | |||
4131 | 4138 | ||
4132 | static void print_slabinfo_header(struct seq_file *m) | 4139 | static void print_slabinfo_header(struct seq_file *m) |
4133 | { | 4140 | { |
@@ -4201,4 +4208,4 @@ const struct seq_operations slabinfo_op = { | |||
4201 | .show = s_show, | 4208 | .show = s_show, |
4202 | }; | 4209 | }; |
4203 | 4210 | ||
4204 | #endif /* CONFIG_PROC_FS */ | 4211 | #endif /* CONFIG_SLABINFO */ |