Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 158a9624 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

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: default avatarPekka Enberg <penberg@cs.helsinki.fi>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 6b6adc22
Loading
Loading
Loading
Loading
+2 −19
Original line number Diff line number Diff line
@@ -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);
+5 −0
Original line number Diff line number Diff line
@@ -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 */
+0 −3
Original line number Diff line number Diff line
@@ -95,7 +95,4 @@ static inline void *kmalloc_node(size_t size, gfp_t flags, int node)

#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 */
+0 −2
Original line number Diff line number Diff line
@@ -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 */
+6 −0
Original line number Diff line number Diff line
@@ -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
Loading