summaryrefslogtreecommitdiff
path: root/src/kernel/core/test.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/kernel/core/test.c')
-rw-r--r--src/kernel/core/test.c50
1 files changed, 29 insertions, 21 deletions
diff --git a/src/kernel/core/test.c b/src/kernel/core/test.c
index fa26c7b..867a4b5 100644
--- a/src/kernel/core/test.c
+++ b/src/kernel/core/test.c
@@ -3,27 +3,35 @@
#include <mem/mem.h>
#include "sys.h"
-#define TEST_KMALLOC(var, sz) void *var = kmalloc(sz); ASSERT(var > 0xE0000000);
-#define TEST_KFREE(var) if (var != 0) { kfree(var); }
+static void test_run_kmalloc() {
+ monitor_write("\tkmalloc:\n");
+ int alloc_sizes[8] = { 10, 32, 16, 20, 64, 128, 32, 48 };
+ int *ptrs[8] = { 0 };
+ int t, i;
+ for (t = 0; t < 2; t++) {
+ for (i = 0; i < 8; i++) {
+ monitor_writeDec(i); monitor_write(" alloc "); monitor_writeDec(alloc_sizes[i]);
+ monitor_write(" : ");
+ ptrs[i] = kmalloc(alloc_sizes[i]);
+ ASSERT(ptrs[i] != 0);
+ *ptrs[i] = i;
+ monitor_writeHex((int)ptrs[i]); monitor_write("\n");
+ }
+ monitor_write("free : ");
+ for (i = 0; i < 8; i++) {
+ monitor_writeDec(i);
+ ASSERT(*ptrs[i] == i);
+ kfree(ptrs[i]);
+ monitor_write(".");
+ }
+ monitor_write("\n");
+ }
+}
+/* This function is called when the kernel starts up.
+ It runs some basic unit tests (for the moment, only tests kmalloc/kfree) */
void test_run() {
- monitor_write("Unit tests:\n\tkmalloc:");
- int i;
- for (i = 1; i <= 7; i++) {
- monitor_write(" #"); monitor_writeDec(i);
- TEST_KMALLOC(a, 32);
- TEST_KMALLOC(b, 64);
- TEST_KMALLOC(c, 256);
- TEST_KMALLOC(d, 512);
- TEST_KMALLOC(e, 1024);
- TEST_KMALLOC(f, 4096);
- TEST_KMALLOC(g, 16384);
- TEST_KFREE(b);
- TEST_KFREE(c);
- TEST_KFREE(d);
- TEST_KFREE(e);
- TEST_KFREE(f);
- TEST_KFREE(g);
- }
- monitor_write("\n >> Tests OK\n");
+ monitor_write("Unit tests:\n");
+ test_run_kmalloc();
+ monitor_write(" >> Tests OK\n");
}