#include "../lib/kernel/print.h" #include "debug.h" #include "init.h" #include "memory.h" #include "../thread/thread.h" #include "interrupt.h" void thread_a_func(void *); void thread_b_func(void *); int main(void) { put_str("I am kernel\n"); init_all(); // asm volatile("sti"); // 使能中断 // ASSERT(1 == 2); // void *addr = get_kernel_pages(4); // put_str("\n get_kernel_page start vaddr is "); // put_int((uintptr_t)addr); // put_str("\n"); thread_start("thread_a", 31, thread_a_func, "argA "); thread_start("thread_b", 8, thread_b_func, "argB "); intr_enable(); // 打开中断,使时钟中断起作用 // 主线程会一直执行, 直到被中断或被其他线程强制结束 while (1) { put_str("Main "); } return 0; } void thread_a_func(void *arg) { // 用 void 来表示通用类型,这样就可以传递任意类型的参数 char *para = arg; while (1) { put_str(para); } } void thread_b_func(void *arg) { // 用 void 来表示通用类型,这样就可以传递任意类型的参数 char *para = arg; while (1) { put_str(para); } }