Procdata uses user_contexts (XCC)
[akaros.git] / tests / slab.c
1 #include <slab.h>
2 #include <stdio.h>
3
4 static void test_single_cache(int iters, size_t size, int align, int flags,
5                               void (*ctor)(void *, size_t),
6                               void (*dtor)(void *, size_t))
7 {
8         struct kmem_cache *test_cache;
9         void *objects[iters];
10         test_cache = kmem_cache_create("test_cache", size, align, flags, ctor, dtor);
11         printf("Testing Kmem Cache:\n");
12         print_kmem_cache(test_cache);
13         for (int i = 0; i < iters; i++) {
14                 objects[i] = kmem_cache_alloc(test_cache, 0);
15                 printf("Buffer %d addr = %p\n", i, objects[i]);
16         }
17         for (int i = 0; i < iters; i++) {
18                 kmem_cache_free(test_cache, objects[i]);
19         }
20         kmem_cache_destroy(test_cache);
21         printf("\n\n\n\n");
22 }
23
24 void a_ctor(void *buf, size_t size)
25 {
26         printf("constructin tests\n");
27 }
28 void a_dtor(void *buf, size_t size)
29 {
30         printf("destructin tests\n");
31 }
32
33 int main(void)
34 {
35         test_single_cache(10, 128, 512, 0, 0, 0);
36         test_single_cache(10, 128, 4, 0, a_ctor, a_dtor);
37         test_single_cache(10, 1024, 16, 0, 0, 0);
38 }