1 #ifndef __LUNAIX_PROCESS_H
2 #define __LUNAIX_PROCESS_H
5 #include <arch/x86/interrupts.h>
6 #include <lunaix/mm/mm.h>
7 #include <lunaix/types.h>
8 #include <lunaix/clock.h>
10 // 虽然内核不是进程,但为了区分,这里使用Pid=-1来指代内核。这主要是方便物理页所有权检查。
13 #define PROC_CREATED 0
14 #define PROC_RUNNING 1
15 #define PROC_STOPPED 2
16 #define PROC_TERMNAT 3
17 #define PROC_DESTROY 4
21 heap_context_t u_heap;
22 struct mm_region* region;
32 time_t parent_created;
38 extern struct proc_info* __current;
44 * @brief 向系统发布一个进程,使其可以被调度。
48 void push_process(struct proc_info* process);
50 void destroy_process(pid_t pid);
52 void* dup_pagetable(pid_t pid);
55 * @brief 复制当前进程(LunaixOS的类 fork (unix) 实现)
61 * @brief 创建新进程(LunaixOS的类 CreateProcess (Windows) 实现)
70 void terminate_process(int exit_code);
72 struct proc_info* get_process(pid_t pid);
74 #endif /* __LUNAIX_PROCESS_H */