X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/cbc8fdbfe473e23e19690204418e19999a9522d1..0fd474df7001837bde53da0e42e83081827c9641:/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 86e485e..868a9fc 100644 --- a/lunaix-os/includes/lunaix/process.h +++ b/lunaix-os/includes/lunaix/process.h @@ -13,6 +13,8 @@ #include #include #include +#include + #include @@ -113,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 @@ -167,6 +169,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 +473,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 */