Browse Source

:new: ktest模块

fslongjin 2 years ago
parent
commit
992f292f89
4 changed files with 41 additions and 2 deletions
  1. 2 2
      kernel/Makefile
  2. 8 0
      kernel/ktest/Makefile
  3. 4 0
      kernel/ktest/ktest.h
  4. 27 0
      kernel/ktest/ktest_utils.h

+ 2 - 2
kernel/Makefile

@@ -18,7 +18,7 @@ LD_LIST := head.o
 OBJ_LIST := head.o
 
 
-kernel_subdirs := common driver process debug filesystem time arch exception mm smp sched syscall
+kernel_subdirs := common driver process debug filesystem time arch exception mm smp sched syscall ktest
 	
 
 
@@ -47,7 +47,7 @@ all: kernel
 	
 # 重新链接
 	echo "Re-Linking kernel..."
-	ld -b elf64-x86-64 -z muldefs -o kernel head.o main.o $(shell find . -name "*.o") -T link.lds
+	ld -b elf64-x86-64 -z muldefs -o kernel head.o main.o $(shell find . -name "*.o") ./debug/kallsyms.o -T link.lds
 	echo "Generating kernel ELF file..."
 # 生成内核文件
 	objcopy -I elf64-x86-64 -O elf64-x86-64 -R ".comment" -R ".eh_frame" kernel ../bin/kernel/kernel.elf

+ 8 - 0
kernel/ktest/Makefile

@@ -0,0 +1,8 @@
+
+CFLAGS += -I .
+
+
+all: bitree.o
+
+bitree.o: test-bitree.c
+	gcc $(CFLAGS) -c test-bitree.c -o test-bitree.o

+ 4 - 0
kernel/ktest/ktest.h

@@ -0,0 +1,4 @@
+#pragma once
+#include <common/sys/types.h>
+
+uint64_t ktest_test_bitree(uint64_t arg);

+ 27 - 0
kernel/ktest/ktest_utils.h

@@ -0,0 +1,27 @@
+#pragma once
+
+#include <common/printk.h>
+#include <common/compiler.h>
+
+#define assert(condition) ({         \
+    int __condition = !!(condition); \
+    if (unlikely(!(__condition)))        \
+    {                            \   
+        printk("[ kTEST FAILED ] Ktest Assertion Failed, file:%s, Line:%d\n", __FILE__, __LINE__); \
+    }                                \
+    likely(__condition); \
+})
+
+#define kTEST(...)           \
+    do                       \
+    {                        \
+        printk("[ kTEST ] file:%s, Line:%d\t", __FILE__, __LINE__); \
+        printk(__VA_ARGS__); \
+        printk("\n");        \
+    } while (0);
+
+/**
+ * @brief 测试用例函数表
+ * 
+ */
+typedef long (*ktest_case_table)(uint64_t arg0, uint64_t arg1);