#ifndef __LUNAIX_PROCESS_H
#define __LUNAIX_PROCESS_H
-#include <arch/x86/interrupts.h>
#include <lunaix/clock.h>
#include <lunaix/ds/waitq.h>
#include <lunaix/fs.h>
#include <lunaix/timer.h>
#include <lunaix/types.h>
#include <stdint.h>
+#include <sys/interrupts.h>
// 虽然内核不是进程,但为了区分,这里使用Pid=-1来指代内核。这主要是方便物理页所有权检查。
#define KERNEL_PID -1
{
/*
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!
*/
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 */