aboutsummaryrefslogtreecommitdiff
path: root/src/tests/slab_test/slab_test.c
diff options
context:
space:
mode:
authorAlex Auvolat <alex.auvolat@ens.fr>2015-02-14 19:15:43 +0100
committerAlex Auvolat <alex.auvolat@ens.fr>2015-02-14 19:15:43 +0100
commit1ca147f9e08202dfbc78692e204adac280f8238b (patch)
tree70cf40c14aae874bae814a9dcddbfdf5aba52079 /src/tests/slab_test/slab_test.c
parent74ea640f40285220dfa93492a143a35426b867d1 (diff)
downloadkogata-1ca147f9e08202dfbc78692e204adac280f8238b.tar.gz
kogata-1ca147f9e08202dfbc78692e204adac280f8238b.zip
Rearrange testing architecture : just type 'make run_tests'
Diffstat (limited to 'src/tests/slab_test/slab_test.c')
-rw-r--r--src/tests/slab_test/slab_test.c44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/tests/slab_test/slab_test.c b/src/tests/slab_test/slab_test.c
new file mode 100644
index 0000000..747c785
--- /dev/null
+++ b/src/tests/slab_test/slab_test.c
@@ -0,0 +1,44 @@
+#include <slab_alloc.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+slab_type_t slab_sizes[] = {
+ { "8B obj", 8, 1 },
+ { "16B obj", 16, 2 },
+ { "32B obj", 32, 2 },
+ { "64B obj", 64, 2 },
+ { "128B obj", 128, 2 },
+ { "256B obj", 256, 4 },
+ { "512B obj", 512, 4 },
+ { "1KB obj", 1024, 8 },
+ { "2KB obj", 2048, 8 },
+ { "4KB obj", 4096, 16 },
+ { 0, 0, 0 }
+};
+
+
+int main(int argc, char *argv[]) {
+ mem_allocator_t *a =
+ create_slab_allocator(slab_sizes, malloc, free);
+
+ const int m = 10000;
+ uint32_t* ptr[m];
+ for (int i = 0; i < m; i++) {
+ size_t s = 1 << ((i * 7) % 12 + 2);
+ ptr[i] = (uint32_t*)slab_alloc(a, s);
+ ASSERT(ptr[i] != 0);
+ *ptr[i] = ((i * 2117) % (1<<30));
+ printf("Alloc %i : 0x%p\n", s, ptr[i]);
+ }
+ for (int i = 0; i < m; i++) {
+ for (int j = i; j < m; j++) {
+ ASSERT(*ptr[j] == (j * 2117) % (1<<30));
+ }
+ slab_free(a, ptr[i]);
+ }
+ destroy_slab_allocator(a);
+
+ return 0;
+}
+
+/* vim: set ts=4 sw=4 tw=0 noet :*/