#ifndef __USERPROG_PROCESS_H #define __USERPROG_PROCESS_H #include "../kernel/global.h" #include "../thread/thread.h" #include "../lib/string.h" #define default_prio 31 #define USER_STACK3_VADDR (0xc0000000 - 0x1000) #define USER_VADDR_START 0x8048000 /// @brief 创建用户进程初始化上下文信息 /// @param filename_ 进程文件名 void start_process(void *filename_); /// @brief 激活页表 /// @param p_thread void page_dir_activate(struct task_struct *p_thread); /// @brief 激活线程或进程的页表,更新 tss 中的 esp0 为进程的特权级 0 的栈 /// @param p_thread void process_activate(struct task_struct *p_thread); /// @brief 创建页目录表,将当前页表的表示内核空间的 pde 复制 /// @param /// @return 成功返回页目录的虚拟地址,否则返回 -1 uint32_t *create_page_dir(void); /// @brief 创建用户进程虚拟虚拟内存池 /// @param user_prog pcb of user void create_user_vaddr_bitmap(struct task_struct *user_prog); /// @brief 创建用户进程 /// @param filename 用户进程地址 /// @param name 进程名 void process_execute(void *filename, char *name); #endif // __USERPROG_PROCESS_H