diff options
author | Glauber Costa <glommer@parallels.com> | 2012-10-19 10:20:26 -0400 |
---|---|---|
committer | Pekka Enberg <penberg@kernel.org> | 2012-10-24 02:38:38 -0400 |
commit | bcee6e2a13d580f6c21d748fcd7239ccc66cb4b8 (patch) | |
tree | 5852e9c608b292605426156dcafaadf1d32709c4 /mm | |
parent | b7454ad3cfc3043c5264729a6204f049fe1f34b1 (diff) |
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>
Diffstat (limited to 'mm')
-rw-r--r-- | mm/slab.c | 24 | ||||
-rw-r--r-- | mm/slab.h | 2 | ||||
-rw-r--r-- | mm/slab_common.c | 23 | ||||
-rw-r--r-- | mm/slub.c | 10 |
4 files changed, 23 insertions, 36 deletions
@@ -4276,30 +4276,6 @@ out: | |||
4276 | } | 4276 | } |
4277 | 4277 | ||
4278 | #ifdef CONFIG_SLABINFO | 4278 | #ifdef CONFIG_SLABINFO |
4279 | |||
4280 | void print_slabinfo_header(struct seq_file *m) | ||
4281 | { | ||
4282 | /* | ||
4283 | * Output format version, so at least we can change it | ||
4284 | * without _too_ many complaints. | ||
4285 | */ | ||
4286 | #if STATS | ||
4287 | seq_puts(m, "slabinfo - version: 2.1 (statistics)\n"); | ||
4288 | #else | ||
4289 | seq_puts(m, "slabinfo - version: 2.1\n"); | ||
4290 | #endif | ||
4291 | seq_puts(m, "# name <active_objs> <num_objs> <objsize> " | ||
4292 | "<objperslab> <pagesperslab>"); | ||
4293 | seq_puts(m, " : tunables <limit> <batchcount> <sharedfactor>"); | ||
4294 | seq_puts(m, " : slabdata <active_slabs> <num_slabs> <sharedavail>"); | ||
4295 | #if STATS | ||
4296 | seq_puts(m, " : globalstat <listallocs> <maxobjs> <grown> <reaped> " | ||
4297 | "<error> <maxfreeable> <nodeallocs> <remotefrees> <alienoverflow>"); | ||
4298 | seq_puts(m, " : cpustat <allochit> <allocmiss> <freehit> <freemiss>"); | ||
4299 | #endif | ||
4300 | seq_putc(m, '\n'); | ||
4301 | } | ||
4302 | |||
4303 | int slabinfo_show(struct seq_file *m, void *p) | 4279 | int slabinfo_show(struct seq_file *m, void *p) |
4304 | { | 4280 | { |
4305 | struct kmem_cache *cachep = list_entry(p, struct kmem_cache, list); | 4281 | struct kmem_cache *cachep = list_entry(p, struct kmem_cache, list); |
@@ -49,8 +49,6 @@ int __kmem_cache_shutdown(struct kmem_cache *); | |||
49 | 49 | ||
50 | struct seq_file; | 50 | struct seq_file; |
51 | struct file; | 51 | struct file; |
52 | void print_slabinfo_header(struct seq_file *m); | ||
53 | |||
54 | int slabinfo_show(struct seq_file *m, void *p); | 52 | int slabinfo_show(struct seq_file *m, void *p); |
55 | 53 | ||
56 | ssize_t slabinfo_write(struct file *file, const char __user *buffer, | 54 | ssize_t slabinfo_write(struct file *file, const char __user *buffer, |
diff --git a/mm/slab_common.c b/mm/slab_common.c index 2e4b4c6d89e2..c64a0438c1f3 100644 --- a/mm/slab_common.c +++ b/mm/slab_common.c | |||
@@ -196,6 +196,29 @@ int slab_is_available(void) | |||
196 | } | 196 | } |
197 | 197 | ||
198 | #ifdef CONFIG_SLABINFO | 198 | #ifdef CONFIG_SLABINFO |
199 | static void print_slabinfo_header(struct seq_file *m) | ||
200 | { | ||
201 | /* | ||
202 | * Output format version, so at least we can change it | ||
203 | * without _too_ many complaints. | ||
204 | */ | ||
205 | #ifdef CONFIG_DEBUG_SLAB | ||
206 | seq_puts(m, "slabinfo - version: 2.1 (statistics)\n"); | ||
207 | #else | ||
208 | seq_puts(m, "slabinfo - version: 2.1\n"); | ||
209 | #endif | ||
210 | seq_puts(m, "# name <active_objs> <num_objs> <objsize> " | ||
211 | "<objperslab> <pagesperslab>"); | ||
212 | seq_puts(m, " : tunables <limit> <batchcount> <sharedfactor>"); | ||
213 | seq_puts(m, " : slabdata <active_slabs> <num_slabs> <sharedavail>"); | ||
214 | #ifdef CONFIG_DEBUG_SLAB | ||
215 | seq_puts(m, " : globalstat <listallocs> <maxobjs> <grown> <reaped> " | ||
216 | "<error> <maxfreeable> <nodeallocs> <remotefrees> <alienoverflow>"); | ||
217 | seq_puts(m, " : cpustat <allochit> <allocmiss> <freehit> <freemiss>"); | ||
218 | #endif | ||
219 | seq_putc(m, '\n'); | ||
220 | } | ||
221 | |||
199 | static void *s_start(struct seq_file *m, loff_t *pos) | 222 | static void *s_start(struct seq_file *m, loff_t *pos) |
200 | { | 223 | { |
201 | loff_t n = *pos; | 224 | loff_t n = *pos; |
@@ -5405,16 +5405,6 @@ __initcall(slab_sysfs_init); | |||
5405 | * The /proc/slabinfo ABI | 5405 | * The /proc/slabinfo ABI |
5406 | */ | 5406 | */ |
5407 | #ifdef CONFIG_SLABINFO | 5407 | #ifdef CONFIG_SLABINFO |
5408 | void print_slabinfo_header(struct seq_file *m) | ||
5409 | { | ||
5410 | seq_puts(m, "slabinfo - version: 2.1\n"); | ||
5411 | seq_puts(m, "# name <active_objs> <num_objs> <object_size> " | ||
5412 | "<objperslab> <pagesperslab>"); | ||
5413 | seq_puts(m, " : tunables <limit> <batchcount> <sharedfactor>"); | ||
5414 | seq_puts(m, " : slabdata <active_slabs> <num_slabs> <sharedavail>"); | ||
5415 | seq_putc(m, '\n'); | ||
5416 | } | ||
5417 | |||
5418 | int slabinfo_show(struct seq_file *m, void *p) | 5408 | int slabinfo_show(struct seq_file *m, void *p) |
5419 | { | 5409 | { |
5420 | unsigned long nr_partials = 0; | 5410 | unsigned long nr_partials = 0; |