mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 04:18:39 +08:00
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
|
||||
|
||||
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)
|
||||
{
|
||||
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 file;
|
||||
void print_slabinfo_header(struct seq_file *m);
|
||||
|
||||
int slabinfo_show(struct seq_file *m, void *p);
|
||||
|
||||
ssize_t slabinfo_write(struct file *file, const char __user *buffer,
|
||||
|
@ -196,6 +196,29 @@ int slab_is_available(void)
|
||||
}
|
||||
|
||||
#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)
|
||||
{
|
||||
loff_t n = *pos;
|
||||
|
10
mm/slub.c
10
mm/slub.c
@ -5405,16 +5405,6 @@ __initcall(slab_sysfs_init);
|
||||
* The /proc/slabinfo ABI
|
||||
*/
|
||||
#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)
|
||||
{
|
||||
unsigned long nr_partials = 0;
|
||||
|
Loading…
Reference in New Issue
Block a user