@@ -24,16 +24,37 @@ struct kmem_cache {
24
24
void * objs ;
25
25
void (* ctor )(void * );
26
26
unsigned int non_kernel ;
27
+ unsigned long nr_allocated ;
28
+ unsigned long nr_tallocated ;
27
29
};
28
30
29
31
void kmem_cache_set_non_kernel (struct kmem_cache * cachep , unsigned int val )
30
32
{
31
33
cachep -> non_kernel = val ;
32
34
}
33
35
36
+ unsigned long kmem_cache_get_alloc (struct kmem_cache * cachep )
37
+ {
38
+ return cachep -> size * cachep -> nr_allocated ;
39
+ }
40
+
41
+ unsigned long kmem_cache_nr_allocated (struct kmem_cache * cachep )
42
+ {
43
+ return cachep -> nr_allocated ;
44
+ }
45
+
46
+ unsigned long kmem_cache_nr_tallocated (struct kmem_cache * cachep )
47
+ {
48
+ return cachep -> nr_tallocated ;
49
+ }
50
+
51
+ void kmem_cache_zero_nr_tallocated (struct kmem_cache * cachep )
52
+ {
53
+ cachep -> nr_tallocated = 0 ;
54
+ }
55
+
34
56
void * kmem_cache_alloc_lru (struct kmem_cache * cachep , struct list_lru * lru ,
35
57
int gfp )
36
-
37
58
{
38
59
void * p ;
39
60
@@ -64,7 +85,9 @@ void *kmem_cache_alloc_lru(struct kmem_cache *cachep, struct list_lru *lru,
64
85
memset (p , 0 , cachep -> size );
65
86
}
66
87
88
+ uatomic_inc (& cachep -> nr_allocated );
67
89
uatomic_inc (& nr_allocated );
90
+ uatomic_inc (& cachep -> nr_tallocated );
68
91
if (kmalloc_verbose )
69
92
printf ("Allocating %p from slab\n" , p );
70
93
return p ;
@@ -74,6 +97,7 @@ void kmem_cache_free(struct kmem_cache *cachep, void *objp)
74
97
{
75
98
assert (objp );
76
99
uatomic_dec (& nr_allocated );
100
+ uatomic_dec (& cachep -> nr_allocated );
77
101
if (kmalloc_verbose )
78
102
printf ("Freeing %p to slab\n" , objp );
79
103
pthread_mutex_lock (& cachep -> lock );
@@ -99,6 +123,8 @@ kmem_cache_create(const char *name, unsigned int size, unsigned int align,
99
123
ret -> size = size ;
100
124
ret -> align = align ;
101
125
ret -> nr_objs = 0 ;
126
+ ret -> nr_allocated = 0 ;
127
+ ret -> nr_tallocated = 0 ;
102
128
ret -> objs = NULL ;
103
129
ret -> ctor = ctor ;
104
130
ret -> non_kernel = 0 ;
0 commit comments