summaryrefslogtreecommitdiff
path: root/kern/kmem.c
diff options
context:
space:
mode:
Diffstat (limited to 'kern/kmem.c')
-rw-r--r--kern/kmem.c112
1 files changed, 37 insertions, 75 deletions
diff --git a/kern/kmem.c b/kern/kmem.c
index af3eccac..2718c09e 100644
--- a/kern/kmem.c
+++ b/kern/kmem.c
@@ -1027,7 +1027,6 @@ slab_free:
void
kmem_cache_info(struct kmem_cache *cache)
{
- struct kmem_cache *cache_stats;
char flags_str[64];
if (cache == NULL) {
@@ -1041,55 +1040,36 @@ kmem_cache_info(struct kmem_cache *cache)
return;
}
- cache_stats = kmem_alloc(sizeof(*cache_stats));
-
- if (cache_stats == NULL) {
- printk("kmem: unable to allocate memory for cache stats\n");
- return;
- }
+ snprintf(flags_str, sizeof(flags_str), "%s%s%s",
+ (cache->flags & KMEM_CF_DIRECT) ? " DIRECT" : "",
+ (cache->flags & KMEM_CF_SLAB_EXTERNAL) ? " SLAB_EXTERNAL" : "",
+ (cache->flags & KMEM_CF_VERIFY) ? " VERIFY" : "");
/* mutex_lock(&cache->mutex); */
- cache_stats->flags = cache->flags;
- cache_stats->obj_size = cache->obj_size;
- cache_stats->align = cache->align;
- cache_stats->buf_size = cache->buf_size;
- cache_stats->bufctl_dist = cache->bufctl_dist;
- cache_stats->slab_size = cache->slab_size;
- cache_stats->color_max = cache->color_max;
- cache_stats->bufs_per_slab = cache->bufs_per_slab;
- cache_stats->nr_objs = cache->nr_objs;
- cache_stats->nr_bufs = cache->nr_bufs;
- cache_stats->nr_slabs = cache->nr_slabs;
- cache_stats->nr_free_slabs = cache->nr_free_slabs;
- strcpy(cache_stats->name, cache->name);
- cache_stats->buftag_dist = cache->buftag_dist;
- cache_stats->redzone_pad = cache->redzone_pad;
- cache_stats->cpu_pool_type = cache->cpu_pool_type;
- /* mutex_unlock(&cache->mutex); */
- snprintf(flags_str, sizeof(flags_str), "%s%s%s",
- (cache_stats->flags & KMEM_CF_DIRECT) ? " DIRECT" : "",
- (cache_stats->flags & KMEM_CF_SLAB_EXTERNAL) ? " SLAB_EXTERNAL" : "",
- (cache_stats->flags & KMEM_CF_VERIFY) ? " VERIFY" : "");
-
- printk("kmem: name: %s\n", cache_stats->name);
- printk("kmem: flags: 0x%x%s\n", cache_stats->flags, flags_str);
- printk("kmem: obj_size: %zu\n", cache_stats->obj_size);
- printk("kmem: align: %zu\n", cache_stats->align);
- printk("kmem: buf_size: %zu\n", cache_stats->buf_size);
- printk("kmem: bufctl_dist: %zu\n", cache_stats->bufctl_dist);
- printk("kmem: slab_size: %zu\n", cache_stats->slab_size);
- printk("kmem: color_max: %zu\n", cache_stats->color_max);
- printk("kmem: bufs_per_slab: %lu\n", cache_stats->bufs_per_slab);
- printk("kmem: nr_objs: %lu\n", cache_stats->nr_objs);
- printk("kmem: nr_bufs: %lu\n", cache_stats->nr_bufs);
- printk("kmem: nr_slabs: %lu\n", cache_stats->nr_slabs);
- printk("kmem: nr_free_slabs: %lu\n", cache_stats->nr_free_slabs);
- printk("kmem: buftag_dist: %zu\n", cache_stats->buftag_dist);
- printk("kmem: redzone_pad: %zu\n", cache_stats->redzone_pad);
- printk("kmem: cpu_pool_size: %d\n", cache_stats->cpu_pool_type->array_size);
-
- kmem_free(cache_stats, sizeof(*cache_stats));
+ printk("kmem: name: %s\n"
+ "kmem: flags: 0x%x%s\n"
+ "kmem: obj_size: %zu\n"
+ "kmem: align: %zu\n"
+ "kmem: buf_size: %zu\n"
+ "kmem: bufctl_dist: %zu\n"
+ "kmem: slab_size: %zu\n"
+ "kmem: color_max: %zu\n"
+ "kmem: bufs_per_slab: %lu\n"
+ "kmem: nr_objs: %lu\n"
+ "kmem: nr_bufs: %lu\n"
+ "kmem: nr_slabs: %lu\n"
+ "kmem: nr_free_slabs: %lu\n"
+ "kmem: buftag_dist: %zu\n"
+ "kmem: redzone_pad: %zu\n"
+ "kmem: cpu_pool_size: %d\n", cache->name, cache->flags, flags_str,
+ cache->obj_size, cache->align, cache->buf_size, cache->bufctl_dist,
+ cache->slab_size, cache->color_max, cache->bufs_per_slab,
+ cache->nr_objs, cache->nr_bufs, cache->nr_slabs,
+ cache->nr_free_slabs, cache->buftag_dist, cache->redzone_pad,
+ cache->cpu_pool_type->array_size);
+
+ /* mutex_unlock(&cache->mutex); */
}
void __init
@@ -1248,47 +1228,29 @@ kmem_free(void *ptr, size_t size)
void
kmem_info(void)
{
- struct kmem_cache *cache, *cache_stats;
+ struct kmem_cache *cache;
size_t mem_usage, mem_reclaimable;
- cache_stats = kmem_alloc(sizeof(*cache_stats));
-
- if (cache_stats == NULL) {
- printk("kmem: unable to allocate memory for cache stats\n");
- return;
- }
-
printk("kmem: cache obj slab bufs objs bufs "
- " total reclaimable\n");
- printk("kmem: name size size /slab usage count "
+ " total reclaimable\n"
+ "kmem: name size size /slab usage count "
" memory memory\n");
/* mutex_lock(&kmem_cache_list_mutex); */
list_for_each_entry(&kmem_cache_list, cache, node) {
/* mutex_lock(&cache->mutex); */
- cache_stats->obj_size = cache->obj_size;
- cache_stats->slab_size = cache->slab_size;
- cache_stats->bufs_per_slab = cache->bufs_per_slab;
- cache_stats->nr_objs = cache->nr_objs;
- cache_stats->nr_bufs = cache->nr_bufs;
- cache_stats->nr_slabs = cache->nr_slabs;
- cache_stats->nr_free_slabs = cache->nr_free_slabs;
- strcpy(cache_stats->name, cache->name);
- /* mutex_unlock(&cache->mutex); */
- mem_usage = (cache_stats->nr_slabs * cache_stats->slab_size) >> 10;
- mem_reclaimable =
- (cache_stats->nr_free_slabs * cache_stats->slab_size) >> 10;
+ mem_usage = (cache->nr_slabs * cache->slab_size) >> 10;
+ mem_reclaimable = (cache->nr_free_slabs * cache->slab_size) >> 10;
printk("kmem: %-19s %6zu %3zuk %4lu %6lu %6lu %7zuk %10zuk\n",
- cache_stats->name, cache_stats->obj_size,
- cache_stats->slab_size >> 10, cache_stats->bufs_per_slab,
- cache_stats->nr_objs, cache_stats->nr_bufs, mem_usage,
- mem_reclaimable);
+ cache->name, cache->obj_size, cache->slab_size >> 10,
+ cache->bufs_per_slab, cache->nr_objs, cache->nr_bufs,
+ mem_usage, mem_reclaimable);
+
+ /* mutex_unlock(&cache->mutex); */
}
/* mutex_unlock(&kmem_cache_list_mutex); */
-
- kmem_free(cache_stats, sizeof(*cache_stats));
}