[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 067/108] linux-user: Split out getcwd, pread64, p
From: |
Richard Henderson |
Subject: |
[Qemu-devel] [PATCH v2 067/108] linux-user: Split out getcwd, pread64, pwrite64, sigaltstack |
Date: |
Sat, 9 Jun 2018 17:01:39 -1000 |
All targets define pread64 and pwrite64; remove the ifdefs.
Signed-off-by: Richard Henderson <address@hidden>
---
linux-user/syscall.c | 88 ++++++++++++++++++++++++++++----------------
1 file changed, 56 insertions(+), 32 deletions(-)
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index e3765069ab..1e1ac8defd 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -8161,6 +8161,19 @@ IMPL(getcpu)
return ret;
}
+IMPL(getcwd)
+{
+ char *p = lock_user(VERIFY_WRITE, arg1, arg2, 0);
+ abi_long ret;
+
+ if (!p) {
+ return -TARGET_EFAULT;
+ }
+ ret = get_errno(sys_getcwd1(p, arg2));
+ unlock_user(p, arg1, ret);
+ return ret;
+}
+
#ifdef TARGET_NR_getdents
IMPL(getdents)
{
@@ -9359,6 +9372,23 @@ IMPL(prctl)
}
}
+IMPL(pread64)
+{
+ void *p = lock_user(VERIFY_WRITE, arg2, arg3, 0);
+ abi_long ret;
+
+ if (!p) {
+ return -TARGET_EFAULT;
+ }
+ if (regpairs_aligned(cpu_env, TARGET_NR_pread64)) {
+ arg4 = arg5;
+ arg5 = arg6;
+ }
+ ret = get_errno(pread64(arg1, p, arg3, target_offset64(arg4, arg5)));
+ unlock_user(p, arg2, ret);
+ return ret;
+}
+
IMPL(preadv)
{
struct iovec *vec;
@@ -9478,6 +9508,23 @@ IMPL(pselect6)
return ret;
}
+IMPL(pwrite64)
+{
+ void *p = lock_user(VERIFY_READ, arg2, arg3, 1);
+ abi_long ret;
+
+ if (!p) {
+ return -TARGET_EFAULT;
+ }
+ if (regpairs_aligned(cpu_env, TARGET_NR_pwrite64)) {
+ arg4 = arg5;
+ arg5 = arg6;
+ }
+ ret = get_errno(pwrite64(arg1, p, arg3, target_offset64(arg4, arg5)));
+ unlock_user(p, arg2, 0);
+ return ret;
+}
+
IMPL(pwritev)
{
struct iovec *vec;
@@ -10359,6 +10406,11 @@ IMPL(sigaction)
}
#endif
+IMPL(sigaltstack)
+{
+ return do_sigaltstack(arg1, arg2, get_sp_from_cpustate(cpu_env));
+}
+
#ifdef TARGET_NR_sigpending
IMPL(sigpending)
{
@@ -11129,34 +11181,6 @@ static abi_long do_syscall1(void *cpu_env, unsigned
num, abi_long arg1,
void *p;
switch(num) {
-#ifdef TARGET_NR_pread64
- case TARGET_NR_pread64:
- if (regpairs_aligned(cpu_env, num)) {
- arg4 = arg5;
- arg5 = arg6;
- }
- if (!(p = lock_user(VERIFY_WRITE, arg2, arg3, 0)))
- return -TARGET_EFAULT;
- ret = get_errno(pread64(arg1, p, arg3, target_offset64(arg4, arg5)));
- unlock_user(p, arg2, ret);
- return ret;
- case TARGET_NR_pwrite64:
- if (regpairs_aligned(cpu_env, num)) {
- arg4 = arg5;
- arg5 = arg6;
- }
- if (!(p = lock_user(VERIFY_READ, arg2, arg3, 1)))
- return -TARGET_EFAULT;
- ret = get_errno(pwrite64(arg1, p, arg3, target_offset64(arg4, arg5)));
- unlock_user(p, arg2, 0);
- return ret;
-#endif
- case TARGET_NR_getcwd:
- if (!(p = lock_user(VERIFY_WRITE, arg1, arg2, 0)))
- return -TARGET_EFAULT;
- ret = get_errno(sys_getcwd1(p, arg2));
- unlock_user(p, arg1, ret);
- return ret;
case TARGET_NR_capget:
case TARGET_NR_capset:
{
@@ -11227,10 +11251,6 @@ static abi_long do_syscall1(void *cpu_env, unsigned
num, abi_long arg1,
}
return ret;
}
- case TARGET_NR_sigaltstack:
- return do_sigaltstack(arg1, arg2,
- get_sp_from_cpustate((CPUArchState *)cpu_env));
-
#ifdef CONFIG_SENDFILE
case TARGET_NR_sendfile:
{
@@ -13022,6 +13042,7 @@ static impl_fn *syscall_table(unsigned num)
SYSCALL(futimesat);
#endif
SYSCALL(getcpu);
+ SYSCALL(getcwd);
#ifdef TARGET_NR_getdents
SYSCALL(getdents);
#endif
@@ -13144,8 +13165,10 @@ static impl_fn *syscall_table(unsigned num)
#endif
SYSCALL(ppoll);
SYSCALL(prctl);
+ SYSCALL(pread64);
SYSCALL(preadv);
SYSCALL(pselect6);
+ SYSCALL(pwrite64);
SYSCALL(pwritev);
SYSCALL(read);
#ifdef TARGET_NR_readlink
@@ -13254,6 +13277,7 @@ static impl_fn *syscall_table(unsigned num)
#ifdef TARGET_NR_sigaction
SYSCALL(sigaction);
#endif
+ SYSCALL(sigaltstack);
#ifdef TARGET_NR_sigpending
SYSCALL(sigpending);
#endif
--
2.17.1
- [Qemu-devel] [PATCH v2 057/108] linux-user: Split out modify_ldt, setdomainname, uname, (continued)
- [Qemu-devel] [PATCH v2 057/108] linux-user: Split out modify_ldt, setdomainname, uname, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 058/108] linux-user: Split out adjtimex, clock_adjtime, vm86, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 059/108] linux-user: Split out fchdir, getpgid, llseek, personality, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 060/108] linux-user: Split out getdents, getdents64, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 061/108] linux-user: Split out poll, ppoll, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 062/108] linux-user: Split out flock, preadv, pwritev, readv, writev, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 063/108] linux-user: Split out fdatasync, getsid, _sysctl, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 065/108] linux-user: Split out getcpu, nanosleep, prctl, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 064/108] linux-user: Split out sched syscalls, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 066/108] linux-user: Split out arch_prctl, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 067/108] linux-user: Split out getcwd, pread64, pwrite64, sigaltstack,
Richard Henderson <=
- [Qemu-devel] [PATCH v2 068/108] linux-user: Split out capget, capset, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 070/108] linux-user: Split out ftruncate64, truncate64, ugetrlimit, vfork, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 069/108] linux-user: Split out sendfile, sendfile64, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 071/108] linux-user: Split out fstat64, fstatat64, newfstatat, lstat64, stat64, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 072/108] linux-user: Split out getegid, geteuid, getgid, getuid, lchown, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 073/108] linux-user: Split out getgroups, setgroups, setregid, setreuid, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 075/108] linux-user: Split out chown, getresgid, getresuid, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 074/108] linux-user: Split out fchown, fchownat, setresgid, setresuid, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 076/108] linux-user: Split out setfsgid, setfsuid, setgid, setuid, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 077/108] linux-user: Split out getuid32, getxgid, getxuid, lchown32, Richard Henderson, 2018/06/09