mirror of
				https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux
				synced 2025-11-04 16:52:06 +10: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