diff options
author | Brandon Potter <brandon.potter@amd.com> | 2019-03-11 14:24:33 -0400 |
---|---|---|
committer | Brandon Potter <Brandon.Potter@amd.com> | 2019-08-06 20:47:28 +0000 |
commit | 598f704d51ddfc7c1abd0afdbb99e4cbafbe8813 (patch) | |
tree | bef0f217232fda275e0e468dba3e38d7c92895fc | |
parent | 20428d69da186083a4fe9e97acb25e79c1857366 (diff) | |
download | gem5-598f704d51ddfc7c1abd0afdbb99e4cbafbe8813.tar.xz |
sim-se: add new getpgrp system call
This changeset adds new (relatively simple) system call
support. The getpgrp call returns a thread context's
pgid.
Change-Id: I361bdbfb9c01b761ddd5a4923d23f86971f8d614
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/17111
Maintainer: Brandon Potter <Brandon.Potter@amd.com>
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Ayaz Akram <yazakram@ucdavis.edu>
-rw-r--r-- | src/arch/x86/linux/process.cc | 2 | ||||
-rw-r--r-- | src/sim/syscall_emul.cc | 7 | ||||
-rw-r--r-- | src/sim/syscall_emul.hh | 3 |
3 files changed, 11 insertions, 1 deletions
diff --git a/src/arch/x86/linux/process.cc b/src/arch/x86/linux/process.cc index 9ffde7f90..8f669bfa5 100644 --- a/src/arch/x86/linux/process.cc +++ b/src/arch/x86/linux/process.cc @@ -373,7 +373,7 @@ static SyscallDesc syscallDescs64[] = { /* 108 */ SyscallDesc("getegid", getegidFunc), /* 109 */ SyscallDesc("setpgid", setpgidFunc), /* 110 */ SyscallDesc("getppid", getppidFunc), - /* 111 */ SyscallDesc("getpgrp", unimplementedFunc), + /* 111 */ SyscallDesc("getpgrp", getpgrpFunc), /* 112 */ SyscallDesc("setsid", unimplementedFunc), /* 113 */ SyscallDesc("setreuid", unimplementedFunc), /* 114 */ SyscallDesc("setregid", unimplementedFunc), diff --git a/src/sim/syscall_emul.cc b/src/sim/syscall_emul.cc index 28e3e3ded..088dcbcce 100644 --- a/src/sim/syscall_emul.cc +++ b/src/sim/syscall_emul.cc @@ -983,6 +983,13 @@ pipe2Func(SyscallDesc *desc, int callnum, ThreadContext *tc) } SyscallReturn +getpgrpFunc(SyscallDesc *desc, int callnum, ThreadContext *tc) +{ + auto process = tc->getProcessPtr(); + return process->pgid(); +} + +SyscallReturn setpgidFunc(SyscallDesc *desc, int callnum, ThreadContext *tc) { int index = 0; diff --git a/src/sim/syscall_emul.hh b/src/sim/syscall_emul.hh index 875f565cd..130791d20 100644 --- a/src/sim/syscall_emul.hh +++ b/src/sim/syscall_emul.hh @@ -226,6 +226,9 @@ SyscallReturn gettidFunc(SyscallDesc *desc, int num, ThreadContext *tc); /// Target chown() handler. SyscallReturn chownFunc(SyscallDesc *desc, int num, ThreadContext *tc); +/// Target getpgrpFunc() handler. +SyscallReturn getpgrpFunc(SyscallDesc *desc, int num, ThreadContext *tc); + /// Target setpgid() handler. SyscallReturn setpgidFunc(SyscallDesc *desc, int num, ThreadContext *tc); |