[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v6 45/49] linux-user: Split out times
From: |
Richard Henderson |
Subject: |
[Qemu-devel] [PATCH v6 45/49] linux-user: Split out times |
Date: |
Sat, 19 Jan 2019 08:31:18 +1100 |
Signed-off-by: Richard Henderson <address@hidden>
---
linux-user/syscall-defs.h | 1 +
linux-user/syscall-proc.inc.c | 25 +++++++++++++++++++++++++
linux-user/syscall.c | 18 ------------------
linux-user/strace.list | 3 ---
4 files changed, 26 insertions(+), 21 deletions(-)
diff --git a/linux-user/syscall-defs.h b/linux-user/syscall-defs.h
index bd3301a72f..25d5aaccd1 100644
--- a/linux-user/syscall-defs.h
+++ b/linux-user/syscall-defs.h
@@ -204,6 +204,7 @@ SYSCALL_DEF(syncfs, ARG_DEC);
#ifdef TARGET_NR_time
SYSCALL_DEF(time, ARG_PTR);
#endif
+SYSCALL_DEF(times, ARG_PTR);
#ifdef TARGET_NR_umount
SYSCALL_DEF(umount, ARG_STR);
#endif
diff --git a/linux-user/syscall-proc.inc.c b/linux-user/syscall-proc.inc.c
index 58c0a22300..09a0306406 100644
--- a/linux-user/syscall-proc.inc.c
+++ b/linux-user/syscall-proc.inc.c
@@ -468,6 +468,31 @@ SYSCALL_IMPL(nice)
}
#endif
+SYSCALL_IMPL(times)
+{
+ abi_ulong target_buf = arg1;
+ struct tms tms;
+ abi_long ret;
+
+ ret = get_errno(times(&tms));
+ if (target_buf) {
+ struct target_tms *tmsp = lock_user(VERIFY_WRITE, target_buf,
+ sizeof(struct target_tms), 0);
+ if (!tmsp) {
+ return -TARGET_EFAULT;
+ }
+ tmsp->tms_utime = tswapal(host_to_target_clock_t(tms.tms_utime));
+ tmsp->tms_stime = tswapal(host_to_target_clock_t(tms.tms_stime));
+ tmsp->tms_cutime = tswapal(host_to_target_clock_t(tms.tms_cutime));
+ tmsp->tms_cstime = tswapal(host_to_target_clock_t(tms.tms_cstime));
+ unlock_user(tmsp, target_buf, sizeof(struct target_tms));
+ }
+ if (!is_error(ret)) {
+ ret = host_to_target_clock_t(ret);
+ }
+ return ret;
+}
+
/*
* Map host to target signal numbers for the wait family of syscalls.
* Assume all other status bits are the same.
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 3a322a61ca..d0bf339281 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -5293,24 +5293,6 @@ static abi_long do_syscall1(void *cpu_env, int num,
abi_long arg1,
void *p;
switch(num) {
- case TARGET_NR_times:
- {
- struct target_tms *tmsp;
- struct tms tms;
- ret = get_errno(times(&tms));
- if (arg1) {
- tmsp = lock_user(VERIFY_WRITE, arg1, sizeof(struct
target_tms), 0);
- if (!tmsp)
- return -TARGET_EFAULT;
- tmsp->tms_utime =
tswapal(host_to_target_clock_t(tms.tms_utime));
- tmsp->tms_stime =
tswapal(host_to_target_clock_t(tms.tms_stime));
- tmsp->tms_cutime =
tswapal(host_to_target_clock_t(tms.tms_cutime));
- tmsp->tms_cstime =
tswapal(host_to_target_clock_t(tms.tms_cstime));
- }
- if (!is_error(ret))
- ret = host_to_target_clock_t(ret);
- }
- return ret;
case TARGET_NR_acct:
if (arg1 == 0) {
ret = get_errno(acct(NULL));
diff --git a/linux-user/strace.list b/linux-user/strace.list
index ac25e13bfa..4ea11f162e 100644
--- a/linux-user/strace.list
+++ b/linux-user/strace.list
@@ -1290,9 +1290,6 @@
#ifdef TARGET_NR_timerfd_settime
{ TARGET_NR_timerfd_settime, "timerfd_settime" , NULL, NULL, NULL },
#endif
-#ifdef TARGET_NR_times
-{ TARGET_NR_times, "times" , NULL, NULL, NULL },
-#endif
#ifdef TARGET_NR_tkill
{ TARGET_NR_tkill, "tkill" , NULL, print_tkill, NULL },
#endif
--
2.17.2
- [Qemu-devel] [PATCH v6 35/49] linux-user: Split out alarm, pause, (continued)
- [Qemu-devel] [PATCH v6 35/49] linux-user: Split out alarm, pause, Richard Henderson, 2019/01/18
- [Qemu-devel] [PATCH v6 36/49] linux-user: Split out utime, utimes, futimesat, Richard Henderson, 2019/01/18
- [Qemu-devel] [PATCH v6 39/49] linux-user: Split out sync, syncfs, Richard Henderson, 2019/01/18
- [Qemu-devel] [PATCH v6 38/49] linux-user: Split out nice, Richard Henderson, 2019/01/18
- [Qemu-devel] [PATCH v6 37/49] linux-user: Split out access, faccessat, Richard Henderson, 2019/01/18
- [Qemu-devel] [PATCH v6 40/49] linux-user: Split out kill, Richard Henderson, 2019/01/18
- [Qemu-devel] [PATCH v6 41/49] linux-user: Split out rename, renameat, renameat2, Richard Henderson, 2019/01/18
- [Qemu-devel] [PATCH v6 42/49] linux-user: Split out mkdir, mkdirat, Richard Henderson, 2019/01/18
- [Qemu-devel] [PATCH v6 43/49] linux-user: Split out dup, dup2, dup3, Richard Henderson, 2019/01/18
- [Qemu-devel] [PATCH v6 44/49] linux-user: Split out pipe, pipe2, Richard Henderson, 2019/01/18
- [Qemu-devel] [PATCH v6 45/49] linux-user: Split out times,
Richard Henderson <=
- [Qemu-devel] [PATCH v6 47/49] linux-user: Move syscall_init to the end, Richard Henderson, 2019/01/18
- [Qemu-devel] [PATCH v6 46/49] linux-user: Split out acct, Richard Henderson, 2019/01/18
- [Qemu-devel] [PATCH v6 49/49] linux-user: Split out fcntl, fcntl64, Richard Henderson, 2019/01/18
- [Qemu-devel] [PATCH v6 48/49] linux-user: Split out ioctl, Richard Henderson, 2019/01/18