ish/kernel/getset.c
2018-10-07 19:07:52 -07:00

91 lines
1.8 KiB
C

#include "kernel/calls.h"
dword_t sys_getpid() {
STRACE("getpid()");
return current->tgid;
}
dword_t sys_gettid() {
STRACE("gettid()");
return current->pid;
}
dword_t sys_getppid() {
STRACE("getppid()");
pid_t_ ppid;
lock(&pids_lock);
if (current->parent != NULL)
ppid = current->parent->pid;
else
ppid = 0;
unlock(&pids_lock);
return ppid;
}
dword_t sys_getpgid(dword_t pid) {
STRACE("getpgid(%d)", pid);
if (pid != 0)
return _EPERM;
return current->pgid;
}
dword_t sys_getpgrp() {
STRACE("getpgrp()");
return current->pgid;
}
dword_t sys_getuid32() {
STRACE("getuid32()");
return current->uid;
}
dword_t sys_getuid() {
STRACE("getuid()");
return current->uid & 0xffff;
}
dword_t sys_geteuid32() {
STRACE("geteuid32()");
return current->euid;
}
dword_t sys_geteuid() {
STRACE("geteuid()");
return current->euid & 0xffff;
}
dword_t sys_setresuid(uid_t_ ruid, uid_t_ euid, uid_t_ suid) {
STRACE("setresuid(%d, %d, %d)", ruid, euid, suid);
if (ruid != -1)
current->uid = ruid;
if (euid != -1)
current->euid = euid;
if (suid != -1)
current->suid = suid;
return 0;
}
dword_t sys_getgid32() {
STRACE("getgid32()");
return current->gid;
}
dword_t sys_getgid() {
STRACE("getgid()");
return current->gid & 0xffff;
}
dword_t sys_getegid32() {
STRACE("getegid32()");
return current->egid;
}
dword_t sys_getegid() {
STRACE("getegid()");
return current->egid & 0xffff;
}
dword_t sys_setresgid(uid_t_ rgid, uid_t_ egid, uid_t_ sgid) {
STRACE("setresgid(%d, %d, %d)", rgid, egid, sgid);
if (rgid != -1)
current->gid = rgid;
if (egid != -1)
current->egid = egid;
if (sgid != -1)
current->sgid = sgid;
return 0;
}