| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- #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);
- }
- }
|