sim-se: Avoid function overloading for syscall implementation
This patch is aligning the readlink and access syscalls to the open one, which is not overloading the openFunc, but it is factoring the implementation into a openImpl, which is used by both open and openat. This is needed if passing them to std::function, whose constructor is not able to handle overloaded functions. Change-Id: I50a8aacdfd675181b6fe9a2696220ee29cc5bc4b Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com> Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/23260 Reviewed-by: Brandon Potter <Brandon.Potter@amd.com> Maintainer: Brandon Potter <Brandon.Potter@amd.com> Tested-by: kokoro <noreply+kokoro@google.com>
This commit is contained in:
@@ -422,11 +422,11 @@ getcwdFunc(SyscallDesc *desc, int num, ThreadContext *tc)
|
||||
SyscallReturn
|
||||
readlinkFunc(SyscallDesc *desc, int callnum, ThreadContext *tc)
|
||||
{
|
||||
return readlinkFunc(desc, callnum, tc, 0);
|
||||
return readlinkImpl(desc, callnum, tc, 0);
|
||||
}
|
||||
|
||||
SyscallReturn
|
||||
readlinkFunc(SyscallDesc *desc, int num, ThreadContext *tc, int index)
|
||||
readlinkImpl(SyscallDesc *desc, int num, ThreadContext *tc, int index)
|
||||
{
|
||||
string path;
|
||||
auto p = tc->getProcessPtr();
|
||||
@@ -1147,7 +1147,7 @@ fallocateFunc(SyscallDesc *desc, int callnum, ThreadContext *tc)
|
||||
}
|
||||
|
||||
SyscallReturn
|
||||
accessFunc(SyscallDesc *desc, int callnum, ThreadContext *tc, int index)
|
||||
accessImpl(SyscallDesc *desc, int callnum, ThreadContext *tc, int index)
|
||||
{
|
||||
string path;
|
||||
auto p = tc->getProcessPtr();
|
||||
@@ -1166,7 +1166,7 @@ accessFunc(SyscallDesc *desc, int callnum, ThreadContext *tc, int index)
|
||||
SyscallReturn
|
||||
accessFunc(SyscallDesc *desc, int callnum, ThreadContext *tc)
|
||||
{
|
||||
return accessFunc(desc, callnum, tc, 0);
|
||||
return accessImpl(desc, callnum, tc, 0);
|
||||
}
|
||||
|
||||
SyscallReturn
|
||||
|
||||
@@ -171,8 +171,8 @@ SyscallReturn gethostnameFunc(SyscallDesc *desc, int num, ThreadContext *tc);
|
||||
SyscallReturn getcwdFunc(SyscallDesc *desc, int num, ThreadContext *tc);
|
||||
|
||||
/// Target readlink() handler.
|
||||
SyscallReturn readlinkFunc(SyscallDesc *desc, int num, ThreadContext *tc,
|
||||
int index = 0);
|
||||
SyscallReturn readlinkImpl(SyscallDesc *desc, int num, ThreadContext *tc,
|
||||
int index);
|
||||
SyscallReturn readlinkFunc(SyscallDesc *desc, int num, ThreadContext *tc);
|
||||
|
||||
/// Target unlink() handler.
|
||||
@@ -313,9 +313,9 @@ SyscallReturn geteuidFunc(SyscallDesc *desc, int num, ThreadContext *tc);
|
||||
SyscallReturn getegidFunc(SyscallDesc *desc, int num, ThreadContext *tc);
|
||||
|
||||
/// Target access() handler
|
||||
SyscallReturn accessFunc(SyscallDesc *desc, int num, ThreadContext *tc);
|
||||
SyscallReturn accessFunc(SyscallDesc *desc, int num, ThreadContext *tc,
|
||||
SyscallReturn accessImpl(SyscallDesc *desc, int num, ThreadContext *tc,
|
||||
int index);
|
||||
SyscallReturn accessFunc(SyscallDesc *desc, int num, ThreadContext *tc);
|
||||
|
||||
// Target getsockopt() handler.
|
||||
SyscallReturn getsockoptFunc(SyscallDesc *desc, int num, ThreadContext *tc);
|
||||
@@ -953,7 +953,7 @@ faccessatFunc(SyscallDesc *desc, int callnum, ThreadContext *tc)
|
||||
int dirfd = process->getSyscallArg(tc, index);
|
||||
if (dirfd != OS::TGT_AT_FDCWD)
|
||||
warn("faccessat: first argument not AT_FDCWD; unlikely to work");
|
||||
return accessFunc(desc, callnum, tc, 1);
|
||||
return accessImpl(desc, callnum, tc, 1);
|
||||
}
|
||||
|
||||
/// Target readlinkat() handler
|
||||
@@ -966,7 +966,7 @@ readlinkatFunc(SyscallDesc *desc, int callnum, ThreadContext *tc)
|
||||
int dirfd = process->getSyscallArg(tc, index);
|
||||
if (dirfd != OS::TGT_AT_FDCWD)
|
||||
warn("openat: first argument not AT_FDCWD; unlikely to work");
|
||||
return readlinkFunc(desc, callnum, tc, 1);
|
||||
return readlinkImpl(desc, callnum, tc, 1);
|
||||
}
|
||||
|
||||
/// Target renameat() handler.
|
||||
|
||||
Reference in New Issue
Block a user