mm/sl[au]b: Move print_slabinfo_header to slab_common.c
The header format is highly similar between slab and slub. The main difference lays in the fact that slab may optionally have statistics added here in case of CONFIG_SLAB_DEBUG, while the slub will stick them somewhere else. By making sure that information conditionally lives inside a globally-visible CONFIG_DEBUG_SLAB switch, we can move the header printing to a common location. Signed-off-by: Glauber Costa <glommer@parallels.com> Acked-by: Christoph Lameter <cl@linux.com> CC: David Rientjes <rientjes@google.com> Signed-off-by: Pekka Enberg <penberg@kernel.org>
This commit is contained in:
parent
b7454ad3cf
commit
bcee6e2a13
24
mm/slab.c
24
mm/slab.c
|
@ -4276,30 +4276,6 @@ out:
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_SLABINFO
|
#ifdef CONFIG_SLABINFO
|
||||||
|
|
||||||
void print_slabinfo_header(struct seq_file *m)
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
* Output format version, so at least we can change it
|
|
||||||
* without _too_ many complaints.
|
|
||||||
*/
|
|
||||||
#if STATS
|
|
||||||
seq_puts(m, "slabinfo - version: 2.1 (statistics)\n");
|
|
||||||
#else
|
|
||||||
seq_puts(m, "slabinfo - version: 2.1\n");
|
|
||||||
#endif
|
|
||||||
seq_puts(m, "# name <active_objs> <num_objs> <objsize> "
|
|
||||||
"<objperslab> <pagesperslab>");
|
|
||||||
seq_puts(m, " : tunables <limit> <batchcount> <sharedfactor>");
|
|
||||||
seq_puts(m, " : slabdata <active_slabs> <num_slabs> <sharedavail>");
|
|
||||||
#if STATS
|
|
||||||
seq_puts(m, " : globalstat <listallocs> <maxobjs> <grown> <reaped> "
|
|
||||||
"<error> <maxfreeable> <nodeallocs> <remotefrees> <alienoverflow>");
|
|
||||||
seq_puts(m, " : cpustat <allochit> <allocmiss> <freehit> <freemiss>");
|
|
||||||
#endif
|
|
||||||
seq_putc(m, '\n');
|
|
||||||
}
|
|
||||||
|
|
||||||
int slabinfo_show(struct seq_file *m, void *p)
|
int slabinfo_show(struct seq_file *m, void *p)
|
||||||
{
|
{
|
||||||
struct kmem_cache *cachep = list_entry(p, struct kmem_cache, list);
|
struct kmem_cache *cachep = list_entry(p, struct kmem_cache, list);
|
||||||
|
|
|
@ -49,8 +49,6 @@ int __kmem_cache_shutdown(struct kmem_cache *);
|
||||||
|
|
||||||
struct seq_file;
|
struct seq_file;
|
||||||
struct file;
|
struct file;
|
||||||
void print_slabinfo_header(struct seq_file *m);
|
|
||||||
|
|
||||||
int slabinfo_show(struct seq_file *m, void *p);
|
int slabinfo_show(struct seq_file *m, void *p);
|
||||||
|
|
||||||
ssize_t slabinfo_write(struct file *file, const char __user *buffer,
|
ssize_t slabinfo_write(struct file *file, const char __user *buffer,
|
||||||
|
|
|
@ -196,6 +196,29 @@ int slab_is_available(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_SLABINFO
|
#ifdef CONFIG_SLABINFO
|
||||||
|
static void print_slabinfo_header(struct seq_file *m)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* Output format version, so at least we can change it
|
||||||
|
* without _too_ many complaints.
|
||||||
|
*/
|
||||||
|
#ifdef CONFIG_DEBUG_SLAB
|
||||||
|
seq_puts(m, "slabinfo - version: 2.1 (statistics)\n");
|
||||||
|
#else
|
||||||
|
seq_puts(m, "slabinfo - version: 2.1\n");
|
||||||
|
#endif
|
||||||
|
seq_puts(m, "# name <active_objs> <num_objs> <objsize> "
|
||||||
|
"<objperslab> <pagesperslab>");
|
||||||
|
seq_puts(m, " : tunables <limit> <batchcount> <sharedfactor>");
|
||||||
|
seq_puts(m, " : slabdata <active_slabs> <num_slabs> <sharedavail>");
|
||||||
|
#ifdef CONFIG_DEBUG_SLAB
|
||||||
|
seq_puts(m, " : globalstat <listallocs> <maxobjs> <grown> <reaped> "
|
||||||
|
"<error> <maxfreeable> <nodeallocs> <remotefrees> <alienoverflow>");
|
||||||
|
seq_puts(m, " : cpustat <allochit> <allocmiss> <freehit> <freemiss>");
|
||||||
|
#endif
|
||||||
|
seq_putc(m, '\n');
|
||||||
|
}
|
||||||
|
|
||||||
static void *s_start(struct seq_file *m, loff_t *pos)
|
static void *s_start(struct seq_file *m, loff_t *pos)
|
||||||
{
|
{
|
||||||
loff_t n = *pos;
|
loff_t n = *pos;
|
||||||
|
|
10
mm/slub.c
10
mm/slub.c
|
@ -5405,16 +5405,6 @@ __initcall(slab_sysfs_init);
|
||||||
* The /proc/slabinfo ABI
|
* The /proc/slabinfo ABI
|
||||||
*/
|
*/
|
||||||
#ifdef CONFIG_SLABINFO
|
#ifdef CONFIG_SLABINFO
|
||||||
void print_slabinfo_header(struct seq_file *m)
|
|
||||||
{
|
|
||||||
seq_puts(m, "slabinfo - version: 2.1\n");
|
|
||||||
seq_puts(m, "# name <active_objs> <num_objs> <object_size> "
|
|
||||||
"<objperslab> <pagesperslab>");
|
|
||||||
seq_puts(m, " : tunables <limit> <batchcount> <sharedfactor>");
|
|
||||||
seq_puts(m, " : slabdata <active_slabs> <num_slabs> <sharedavail>");
|
|
||||||
seq_putc(m, '\n');
|
|
||||||
}
|
|
||||||
|
|
||||||
int slabinfo_show(struct seq_file *m, void *p)
|
int slabinfo_show(struct seq_file *m, void *p)
|
||||||
{
|
{
|
||||||
unsigned long nr_partials = 0;
|
unsigned long nr_partials = 0;
|
||||||
|
|
Loading…
Reference in New Issue