X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/bb793d5c6918efee6a86de442463a7c9aaa4ecdd..f6ab9c9ababa2cf6e5c723b83ffb9362094054e8:/lunaix-os/includes/lunaix/process.h diff --git a/lunaix-os/includes/lunaix/process.h b/lunaix-os/includes/lunaix/process.h index 1453e71..10dc5ec 100644 --- a/lunaix-os/includes/lunaix/process.h +++ b/lunaix-os/includes/lunaix/process.h @@ -1,7 +1,6 @@ #ifndef __LUNAIX_PROCESS_H #define __LUNAIX_PROCESS_H -#include #include #include #include @@ -11,6 +10,7 @@ #include #include #include +#include // 虽然内核不是进程,但为了区分,这里使用Pid=-1来指代内核。这主要是方便物理页所有权检查。 #define KERNEL_PID -1 @@ -74,7 +74,7 @@ struct proc_info { /* Any change to *critical section*, including layout, size - must be reflected in arch/x86/interrupt.S.inc to avoid + must be reflected in arch/i386/interrupt.S.inc to avoid disaster! */ @@ -195,4 +195,18 @@ proc_setsignal(struct proc_info* proc, int signum); void proc_clear_signal(struct proc_info* proc); +// enable interrupt upon transfer +#define TRANSFER_IE 1 + +/** + * @brief Setup process initial context, used to initiate first switch + * + * @param proc + * @param stop + * @param target + * @param flags + */ +void +proc_init_transfer(struct proc_info* proc, ptr_t stop, ptr_t target, int flags); + #endif /* __LUNAIX_PROCESS_H */