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 a11968bc0516..3462bfde89f6 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 f3a8eecd99f3..f62caaad94e0 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 32bdc2ffd715..fcc48096ee64 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 b7d9408a00ff..40801e754afb 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 404bbf3699be..b9d11a899b88 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 */ |
