process.h 1.1 KB

123456789101112131415161718192021222324252627282930313233
  1. #ifndef __USERPROG_PROCESS_H
  2. #define __USERPROG_PROCESS_H
  3. #include "../kernel/global.h"
  4. #include "../thread/thread.h"
  5. #include "../lib/string.h"
  6. #define default_prio 31
  7. #define USER_STACK3_VADDR (0xc0000000 - 0x1000)
  8. #define USER_VADDR_START 0x8048000
  9. /// @brief 创建用户进程初始化上下文信息
  10. /// @param filename_ 进程文件名
  11. void start_process(void *filename_);
  12. /// @brief 激活页表
  13. /// @param p_thread
  14. void page_dir_activate(struct task_struct *p_thread);
  15. /// @brief 激活线程或进程的页表,更新 tss 中的 esp0 为进程的特权级 0 的栈
  16. /// @param p_thread
  17. void process_activate(struct task_struct *p_thread);
  18. /// @brief 创建页目录表,将当前页表的表示内核空间的 pde 复制
  19. /// @param
  20. /// @return 成功返回页目录的虚拟地址,否则返回 -1
  21. uint32_t *create_page_dir(void);
  22. /// @brief 创建用户进程虚拟虚拟内存池
  23. /// @param user_prog pcb of user
  24. void create_user_vaddr_bitmap(struct task_struct *user_prog);
  25. /// @brief 创建用户进程
  26. /// @param filename 用户进程地址
  27. /// @param name 进程名
  28. void process_execute(void *filename, char *name);
  29. #endif // __USERPROG_PROCESS_H