X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/bffa3430fbbaaad29bec0b5bee9c1f0bfc7fd068..b1644f824d7f4989a94b8a752aadee26cae25069:/lunaix-os/includes/lunaix/process.h diff --git a/lunaix-os/includes/lunaix/process.h b/lunaix-os/includes/lunaix/process.h index 86e485e..a9f307c 100644 --- a/lunaix-os/includes/lunaix/process.h +++ b/lunaix-os/includes/lunaix/process.h @@ -13,6 +13,10 @@ #include #include #include +#include + +#include + #include @@ -113,7 +117,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 @@ -167,6 +171,14 @@ 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; + struct v_dnode* root; + int state; int exit_code; }; @@ -463,5 +475,40 @@ 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 bool must_inline +current_is_root() +{ + return current_euid() == 0; +} + +static inline gid_t must_inline +current_egid() +{ + return __current->egid; +} + +static inline void must_inline +current_set_egid(gid_t gid) +{ + __current->egid = gid; +} + +static inline void must_inline +current_set_euid(uid_t uid) +{ + __current->euid = uid; +} #endif /* __LUNAIX_PROCESS_H */