X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/270869139db617e29a35bb9ded41087bb702f9ac..5f4f16c074be65639b5c3333441d48b1d418104c:/lunaix-os/includes/lunaix/process.h diff --git a/lunaix-os/includes/lunaix/process.h b/lunaix-os/includes/lunaix/process.h index faca284..8d4c70b 100644 --- a/lunaix-os/includes/lunaix/process.h +++ b/lunaix-os/includes/lunaix/process.h @@ -13,6 +13,8 @@ #include #include #include +#include + #include @@ -45,9 +47,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 @@ -110,7 +115,7 @@ struct thread { /* Any change to *critical section*, including layout, size - must be reflected in arch/x86/interrupt.S.inc to avoid + must be reflected in arch//interrupt.S.inc to avoid disaster! */ struct @@ -164,6 +169,13 @@ struct proc_info pid_t pgid; time_t created; + uid_t euid; + uid_t suid; + gid_t egid; + gid_t sgid; + + struct user_scope uscope; + int state; int exit_code; }; @@ -367,6 +379,7 @@ spawn_kthread(ptr_t entry) { assert(th); start_thread(th, entry); + detach_thread(th); } void @@ -459,5 +472,22 @@ thread_stats_user_elapse(struct thread* thread) return stats->last_entry - stats->last_leave; } +static inline struct user_scope* +current_user_scope() +{ + return &__current->uscope; +} + +static inline uid_t must_inline +current_euid() +{ + return __current->euid; +} + +static inline gid_t must_inline +current_egid() +{ + return __current->egid; +} #endif /* __LUNAIX_PROCESS_H */