main.c 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #include "../lib/kernel/print.h"
  2. #include "debug.h"
  3. #include "init.h"
  4. #include "memory.h"
  5. #include "../thread/thread.h"
  6. #include "interrupt.h"
  7. #include "../device/console.h"
  8. void thread_a_func(void *);
  9. void thread_b_func(void *);
  10. int main(void)
  11. {
  12. put_str("I am kernel\n");
  13. init_all();
  14. // asm volatile("sti"); // 使能中断
  15. // ASSERT(1 == 2);
  16. // void *addr = get_kernel_pages(4);
  17. // put_str("\n get_kernel_page start vaddr is ");
  18. // put_int((uintptr_t)addr);
  19. // put_str("\n");
  20. // thread_start("thread_a", 31, thread_a_func, "argA ");
  21. // thread_start("thread_b", 8, thread_b_func, "argB ");
  22. intr_enable(); // 打开中断,使时钟中断起作用
  23. // 主线程会一直执行, 直到被中断或被其他线程强制结束
  24. while (1)
  25. ;
  26. // {
  27. // console_put_str("Main ");
  28. // }
  29. return 0;
  30. }
  31. void thread_a_func(void *arg)
  32. {
  33. // 用 void 来表示通用类型,这样就可以传递任意类型的参数
  34. char *para = arg;
  35. while (1)
  36. {
  37. console_put_str(para);
  38. }
  39. }
  40. void thread_b_func(void *arg)
  41. {
  42. // 用 void 来表示通用类型,这样就可以传递任意类型的参数
  43. char *para = arg;
  44. while (1)
  45. {
  46. console_put_str(para);
  47. }
  48. }