X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/87067c7f16425837971f5c1b5fd0fc5338757377..04ee277abd77fc51c5ab02ee58790a859607ea24:/lunaix-os/includes/lunaix/process.h?ds=inline diff --git a/lunaix-os/includes/lunaix/process.h b/lunaix-os/includes/lunaix/process.h index a8ac5d8..7d385a4 100644 --- a/lunaix-os/includes/lunaix/process.h +++ b/lunaix-os/includes/lunaix/process.h @@ -41,18 +41,12 @@ #define PS_GrBP (PS_PAUSED | PS_BLOCKED) #define PS_GrDT (PS_TERMNAT | PS_DESTROY) -#define PROC_TERMINATED(state) ((state)&PS_GrDT) -#define PROC_HANGED(state) ((state)&PS_BLOCKED) -#define PROC_RUNNABLE(state) ((state)&PS_PAUSED) +#define proc_terminated(proc) (((proc)->state) & PS_GrDT) +#define proc_hanged(proc) (((proc)->state) & PS_BLOCKED) +#define proc_runnable(proc) (((proc)->state) & PS_PAUSED) #define PROC_FINPAUSE 1 -struct proc_sigstate -{ - isr_param proc_regs; - char fxstate[512] __attribute__((aligned(16))); -}; - struct sigact { struct sigact* prev; @@ -75,7 +69,7 @@ struct proc_sig int sig_num; void* sigact; void* sighand; - struct proc_sigstate prev_context; + isr_param* saved_ictx; } __attribute__((packed)); struct proc_info @@ -90,10 +84,9 @@ struct proc_info pid_t pid; // offset = 0 struct proc_info* parent; // offset = 4 - isr_param intr_ctx; // offset = 8 - ptr_t ustack_top; // offset = 84 -> 56 -> 60 - ptr_t page_table; // offset = 88 -> 60 -> 64 - void* fxstate; // offset = 92 -> 64 -> 68 + isr_param* intr_ctx; // offset = 8 + ptr_t ustack_top; // offset = 84 -> 56 -> 60 -> 12 + ptr_t page_table; // offset = 88 -> 60 -> 64 -> 16 /* ---- critical section end ---- */ @@ -170,7 +163,7 @@ pid_t destroy_process(pid_t pid); void -setup_proc_mem(struct proc_info* proc, ptr_t kstack_from); +copy_kernel_stack(struct proc_info* proc, ptr_t kstack_from); /** * @brief 复制当前进程(LunaixOS的类 fork (unix) 实现)