X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/270869139db617e29a35bb9ded41087bb702f9ac..ca2485429c19d3e5cdecbb39a5f3383b40477d94:/lunaix-os/includes/lunaix/process.h?ds=sidebyside diff --git a/lunaix-os/includes/lunaix/process.h b/lunaix-os/includes/lunaix/process.h index faca284..2c8d740 100644 --- a/lunaix-os/includes/lunaix/process.h +++ b/lunaix-os/includes/lunaix/process.h @@ -45,9 +45,12 @@ #define PS_GrDT (PS_TERMNAT | PS_DESTROY) #define PS_Rn (PS_RUNNING | PS_CREATED) -#define proc_terminated(proc) (((proc)->state) & PS_GrDT) -#define proc_hanged(proc) (((proc)->state) & PS_BLOCKED) -#define proc_runnable(proc) (!(proc)->state || !(((proc)->state) & ~PS_Rn)) +#define proc_terminated(proc) \ + (!(proc) || ((proc)->state) & PS_GrDT) +#define proc_hanged(proc) \ + ((proc) && ((proc)->state) & PS_BLOCKED) +#define proc_runnable(proc) \ + ((proc) && (!(proc)->state || !(((proc)->state) & ~PS_Rn))) #define TH_DETACHED 0b00000001 @@ -367,6 +370,7 @@ spawn_kthread(ptr_t entry) { assert(th); start_thread(th, entry); + detach_thread(th); } void @@ -375,6 +379,9 @@ exit_thread(void* val); void thread_release_mem(struct thread* thread); +ptr_t +proc_vmroot(); + /* ========= Signal ========= */