Unify /proc/slabinfo configuration
Both SLUB and SLAB really did almost exactly the same thing for /proc/slabinfo setup, using duplicate code and per-allocator #ifdef's. This just creates a common CONFIG_SLABINFO that is enabled by both SLUB and SLAB, and shares all the setup code. Maybe SLOB will want this some day too. Reviewed-by: Pekka Enberg <penberg@cs.helsinki.fi> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Родитель
6b6adc22a0
Коммит
158a962422
|
@ -410,7 +410,7 @@ static const struct file_operations proc_modules_operations = {
|
|||
};
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SLAB
|
||||
#ifdef CONFIG_SLABINFO
|
||||
static int slabinfo_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return seq_open(file, &slabinfo_op);
|
||||
|
@ -451,20 +451,6 @@ static const struct file_operations proc_slabstats_operations = {
|
|||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SLUB
|
||||
static int slabinfo_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return seq_open(file, &slabinfo_op);
|
||||
}
|
||||
|
||||
static const struct file_operations proc_slabinfo_operations = {
|
||||
.open = slabinfo_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = seq_release,
|
||||
};
|
||||
#endif
|
||||
|
||||
static int show_stat(struct seq_file *p, void *v)
|
||||
{
|
||||
int i;
|
||||
|
@ -742,14 +728,11 @@ void __init proc_misc_init(void)
|
|||
#endif
|
||||
create_seq_entry("stat", 0, &proc_stat_operations);
|
||||
create_seq_entry("interrupts", 0, &proc_interrupts_operations);
|
||||
#ifdef CONFIG_SLAB
|
||||
#ifdef CONFIG_SLABINFO
|
||||
create_seq_entry("slabinfo",S_IWUSR|S_IRUGO,&proc_slabinfo_operations);
|
||||
#ifdef CONFIG_DEBUG_SLAB_LEAK
|
||||
create_seq_entry("slab_allocators", 0 ,&proc_slabstats_operations);
|
||||
#endif
|
||||
#endif
|
||||
#ifdef CONFIG_SLUB
|
||||
create_seq_entry("slabinfo", S_IWUSR|S_IRUGO, &proc_slabinfo_operations);
|
||||
#endif
|
||||
create_seq_entry("buddyinfo",S_IRUGO, &fragmentation_file_operations);
|
||||
create_seq_entry("pagetypeinfo", S_IRUGO, &pagetypeinfo_file_ops);
|
||||
|
|
|
@ -271,5 +271,10 @@ static inline void *kzalloc(size_t size, gfp_t flags)
|
|||
return kmalloc(size, flags | __GFP_ZERO);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SLABINFO
|
||||
extern const struct seq_operations slabinfo_op;
|
||||
ssize_t slabinfo_write(struct file *, const char __user *, size_t, loff_t *);
|
||||
#endif
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
#endif /* _LINUX_SLAB_H */
|
||||
|
|
|
@ -95,7 +95,4 @@ found:
|
|||
|
||||
#endif /* CONFIG_NUMA */
|
||||
|
||||
extern const struct seq_operations slabinfo_op;
|
||||
ssize_t slabinfo_write(struct file *, const char __user *, size_t, loff_t *);
|
||||
|
||||
#endif /* _LINUX_SLAB_DEF_H */
|
||||
|
|
|
@ -200,6 +200,4 @@ static __always_inline void *kmalloc_node(size_t size, gfp_t flags, int node)
|
|||
}
|
||||
#endif
|
||||
|
||||
extern const struct seq_operations slabinfo_op;
|
||||
|
||||
#endif /* _LINUX_SLUB_DEF_H */
|
||||
|
|
|
@ -658,6 +658,12 @@ endchoice
|
|||
|
||||
endmenu # General setup
|
||||
|
||||
config SLABINFO
|
||||
bool
|
||||
depends on PROC_FS
|
||||
depends on SLAB || SLUB
|
||||
default y
|
||||
|
||||
config RT_MUTEXES
|
||||
boolean
|
||||
select PLIST
|
||||
|
|
|
@ -4105,7 +4105,7 @@ out:
|
|||
schedule_delayed_work(work, round_jiffies_relative(REAPTIMEOUT_CPUC));
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PROC_FS
|
||||
#ifdef CONFIG_SLABINFO
|
||||
|
||||
static void print_slabinfo_header(struct seq_file *m)
|
||||
{
|
||||
|
|
11
mm/slub.c
11
mm/slub.c
|
@ -4127,7 +4127,14 @@ __initcall(slab_sysfs_init);
|
|||
/*
|
||||
* The /proc/slabinfo ABI
|
||||
*/
|
||||
#ifdef CONFIG_PROC_FS
|
||||
#ifdef CONFIG_SLABINFO
|
||||
|
||||
ssize_t slabinfo_write(struct file *file, const char __user * buffer,
|
||||
size_t count, loff_t *ppos)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
|
||||
static void print_slabinfo_header(struct seq_file *m)
|
||||
{
|
||||
|
@ -4201,4 +4208,4 @@ const struct seq_operations slabinfo_op = {
|
|||
.show = s_show,
|
||||
};
|
||||
|
||||
#endif /* CONFIG_PROC_FS */
|
||||
#endif /* CONFIG_SLABINFO */
|
||||
|
|
Загрузка…
Ссылка в новой задаче