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 k_heap;
22 heap_context_t u_heap;
23 struct mm_region* region;
33 time_t parent_created;
39 extern struct proc_info* __current;
45 * @brief 向系统发布一个进程,使其可以被调度。
49 void push_process(struct proc_info* process);
51 void destroy_process(pid_t pid);
54 * @brief 复制当前进程(LunaixOS的类 fork (unix) 实现)
60 * @brief 创建新进程(LunaixOS的类 CreateProcess (Windows) 实现)
69 void terminate_process(int exit_code);
71 struct proc_info* get_process(pid_t pid);
73 #endif /* __LUNAIX_PROCESS_H */