| #include <parlib/slab.h> |
| #include <stdio.h> |
| |
| static void test_single_cache(int iters, size_t size, int align, int flags, |
| void (*ctor)(void *, size_t), |
| void (*dtor)(void *, size_t)) |
| { |
| struct kmem_cache *test_cache; |
| void *objects[iters]; |
| test_cache = kmem_cache_create("test_cache", size, align, flags, ctor, dtor); |
| printf("Testing Kmem Cache:\n"); |
| print_kmem_cache(test_cache); |
| for (int i = 0; i < iters; i++) { |
| objects[i] = kmem_cache_alloc(test_cache, 0); |
| printf("Buffer %d addr = %p\n", i, objects[i]); |
| } |
| for (int i = 0; i < iters; i++) { |
| kmem_cache_free(test_cache, objects[i]); |
| } |
| kmem_cache_destroy(test_cache); |
| printf("\n\n\n\n"); |
| } |
| |
| void a_ctor(void *buf, size_t size) |
| { |
| printf("constructin tests\n"); |
| } |
| void a_dtor(void *buf, size_t size) |
| { |
| printf("destructin tests\n"); |
| } |
| |
| int main(void) |
| { |
| test_single_cache(10, 128, 512, 0, 0, 0); |
| test_single_cache(10, 128, 4, 0, a_ctor, a_dtor); |
| test_single_cache(10, 1024, 16, 0, 0, 0); |
| } |