forked from Bananymous/banan-os
Kernel/LibC: Add {get,set}pgrp()
This commit is contained in:
parent
ccc61cb10c
commit
42b90ae76c
|
@ -79,6 +79,7 @@ namespace Kernel
|
||||||
BAN::ErrorOr<long> sys_setegid(gid_t);
|
BAN::ErrorOr<long> sys_setegid(gid_t);
|
||||||
BAN::ErrorOr<long> sys_setreuid(uid_t, uid_t);
|
BAN::ErrorOr<long> sys_setreuid(uid_t, uid_t);
|
||||||
BAN::ErrorOr<long> sys_setregid(gid_t, gid_t);
|
BAN::ErrorOr<long> sys_setregid(gid_t, gid_t);
|
||||||
|
BAN::ErrorOr<long> sys_setpgrp();
|
||||||
|
|
||||||
BAN::ErrorOr<long> sys_getuid() const { return m_credentials.ruid(); }
|
BAN::ErrorOr<long> sys_getuid() const { return m_credentials.ruid(); }
|
||||||
BAN::ErrorOr<long> sys_getgid() const { return m_credentials.rgid(); }
|
BAN::ErrorOr<long> sys_getgid() const { return m_credentials.rgid(); }
|
||||||
|
|
|
@ -1137,6 +1137,13 @@ namespace Kernel
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BAN::ErrorOr<long> Process::sys_setpgrp()
|
||||||
|
{
|
||||||
|
LockGuard _(m_lock);
|
||||||
|
m_pgrp = pid();
|
||||||
|
return pgrp();
|
||||||
|
}
|
||||||
|
|
||||||
BAN::ErrorOr<BAN::String> Process::absolute_path_of(BAN::StringView path) const
|
BAN::ErrorOr<BAN::String> Process::absolute_path_of(BAN::StringView path) const
|
||||||
{
|
{
|
||||||
ASSERT(m_lock.is_locked());
|
ASSERT(m_lock.is_locked());
|
||||||
|
|
|
@ -173,6 +173,12 @@ namespace Kernel
|
||||||
case SYS_GET_PID:
|
case SYS_GET_PID:
|
||||||
ret = Process::current().pid();
|
ret = Process::current().pid();
|
||||||
break;
|
break;
|
||||||
|
case SYS_GET_PGRP:
|
||||||
|
ret = Process::current().pgrp();
|
||||||
|
break;
|
||||||
|
case SYS_SET_PGRP:
|
||||||
|
ret = Process::current().sys_setpgrp();
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
dwarnln("Unknown syscall {}", syscall);
|
dwarnln("Unknown syscall {}", syscall);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -48,6 +48,8 @@ __BEGIN_DECLS
|
||||||
#define SYS_SIGNAL_DONE 41
|
#define SYS_SIGNAL_DONE 41
|
||||||
#define SYS_TCSETPGRP 42
|
#define SYS_TCSETPGRP 42
|
||||||
#define SYS_GET_PID 43
|
#define SYS_GET_PID 43
|
||||||
|
#define SYS_GET_PGRP 44
|
||||||
|
#define SYS_SET_PGRP 45
|
||||||
|
|
||||||
__END_DECLS
|
__END_DECLS
|
||||||
|
|
||||||
|
|
|
@ -208,6 +208,11 @@ gid_t getegid(void)
|
||||||
return syscall(SYS_GET_EGID);
|
return syscall(SYS_GET_EGID);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pid_t getpgrp(void)
|
||||||
|
{
|
||||||
|
return syscall(SYS_GET_PGRP);
|
||||||
|
}
|
||||||
|
|
||||||
int seteuid(uid_t uid)
|
int seteuid(uid_t uid)
|
||||||
{
|
{
|
||||||
return syscall(SYS_SET_EUID, uid);
|
return syscall(SYS_SET_EUID, uid);
|
||||||
|
@ -238,6 +243,11 @@ int setregid(gid_t rgid, gid_t egid)
|
||||||
return syscall(SYS_SET_REGID, rgid, egid);
|
return syscall(SYS_SET_REGID, rgid, egid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pid_t setpgrp(void)
|
||||||
|
{
|
||||||
|
return syscall(SYS_SET_PGRP);
|
||||||
|
}
|
||||||
|
|
||||||
int tcsetpgrp(int fildes, pid_t pgid_id)
|
int tcsetpgrp(int fildes, pid_t pgid_id)
|
||||||
{
|
{
|
||||||
return syscall(SYS_TCSETPGRP, fildes, pgid_id);
|
return syscall(SYS_TCSETPGRP, fildes, pgid_id);
|
||||||
|
|
Loading…
Reference in New Issue