[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v7 67/74] linux-user: Split out gettimeofday, settim
From: |
Richard Henderson |
Subject: |
[Qemu-devel] [PATCH v7 67/74] linux-user: Split out gettimeofday, settimeofday |
Date: |
Sun, 19 May 2019 13:37:19 -0700 |
Signed-off-by: Richard Henderson <address@hidden>
---
linux-user/syscall-defs.h | 2 ++
linux-user/syscall-time.inc.c | 33 +++++++++++++++++++++++++++++++++
linux-user/syscall.c | 31 -------------------------------
linux-user/strace.list | 6 ------
4 files changed, 35 insertions(+), 37 deletions(-)
diff --git a/linux-user/syscall-defs.h b/linux-user/syscall-defs.h
index 446175af84..d109754c5f 100644
--- a/linux-user/syscall-defs.h
+++ b/linux-user/syscall-defs.h
@@ -77,6 +77,7 @@ SYSCALL_DEF(getrlimit, ARG_DEC, ARG_PTR);
#endif
SYSCALL_DEF(getrusage, ARG_DEC, ARG_PTR);
SYSCALL_DEF(getsid, ARG_DEC);
+SYSCALL_DEF(gettimeofday, ARG_PTR);
#ifdef TARGET_NR_getxpid
SYSCALL_DEF(getxpid);
#endif
@@ -220,6 +221,7 @@ SYSCALL_DEF(setpgid, ARG_DEC, ARG_DEC);
SYSCALL_DEF(setrlimit, ARG_DEC, ARG_PTR);
#endif
SYSCALL_DEF(setsid);
+SYSCALL_DEF(settimeofday, ARG_PTR, ARG_PTR);
#if !defined(SYSCALL_TABLE) || defined(TARGET_NR_semop)
SYSCALL_DEF(semop, ARG_DEC, ARG_PTR, ARG_DEC);
#endif
diff --git a/linux-user/syscall-time.inc.c b/linux-user/syscall-time.inc.c
index d1fb72bde0..1308af64ac 100644
--- a/linux-user/syscall-time.inc.c
+++ b/linux-user/syscall-time.inc.c
@@ -16,6 +16,39 @@
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
+SYSCALL_IMPL(gettimeofday)
+{
+ struct timeval tv;
+ abi_long ret = get_errno(gettimeofday(&tv, NULL));
+
+ if (!is_error(ret) && copy_to_user_timeval(arg1, &tv)) {
+ return -TARGET_EFAULT;
+ }
+ return ret;
+}
+
+SYSCALL_IMPL(settimeofday)
+{
+ struct timeval tv, *ptv = NULL;
+ struct timezone tz, *ptz = NULL;
+
+ if (arg1) {
+ if (copy_from_user_timeval(&tv, arg1)) {
+ return -TARGET_EFAULT;
+ }
+ ptv = &tv;
+ }
+
+ if (arg2) {
+ if (copy_from_user_timezone(&tz, arg2)) {
+ return -TARGET_EFAULT;
+ }
+ ptz = &tz;
+ }
+
+ return get_errno(settimeofday(ptv, ptz));
+}
+
#ifdef TARGET_NR_stime
SYSCALL_IMPL(stime)
{
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 5fe52c775d..b8bc44364d 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -4240,37 +4240,6 @@ static abi_long do_syscall1(void *cpu_env, int num,
abi_long arg1,
void *p;
switch(num) {
- case TARGET_NR_gettimeofday:
- {
- struct timeval tv;
- ret = get_errno(gettimeofday(&tv, NULL));
- if (!is_error(ret)) {
- if (copy_to_user_timeval(arg1, &tv))
- return -TARGET_EFAULT;
- }
- }
- return ret;
- case TARGET_NR_settimeofday:
- {
- struct timeval tv, *ptv = NULL;
- struct timezone tz, *ptz = NULL;
-
- if (arg1) {
- if (copy_from_user_timeval(&tv, arg1)) {
- return -TARGET_EFAULT;
- }
- ptv = &tv;
- }
-
- if (arg2) {
- if (copy_from_user_timezone(&tz, arg2)) {
- return -TARGET_EFAULT;
- }
- ptz = &tz;
- }
-
- return get_errno(settimeofday(ptv, ptz));
- }
#if defined(TARGET_NR_select)
case TARGET_NR_select:
#if defined(TARGET_WANT_NI_OLD_SELECT)
diff --git a/linux-user/strace.list b/linux-user/strace.list
index 00a32bc616..635b952d2f 100644
--- a/linux-user/strace.list
+++ b/linux-user/strace.list
@@ -296,9 +296,6 @@
#ifdef TARGET_NR_gettid
{ TARGET_NR_gettid, "gettid" , "%s()", NULL, NULL },
#endif
-#ifdef TARGET_NR_gettimeofday
-{ TARGET_NR_gettimeofday, "gettimeofday" , NULL, NULL, NULL },
-#endif
#ifdef TARGET_NR_getuid
{ TARGET_NR_getuid, "getuid" , "%s()", NULL, NULL },
#endif
@@ -1068,9 +1065,6 @@
#ifdef TARGET_NR_set_tid_address
{ TARGET_NR_set_tid_address, "set_tid_address" , NULL, NULL, NULL },
#endif
-#ifdef TARGET_NR_settimeofday
-{ TARGET_NR_settimeofday, "settimeofday" , NULL, NULL, NULL },
-#endif
#ifdef TARGET_NR_setuid
{ TARGET_NR_setuid, "setuid" , NULL, NULL, NULL },
#endif
--
2.17.1
- [Qemu-devel] [PATCH v7 54/74] linux-user: Split out getpgid, getpgrp, (continued)
- [Qemu-devel] [PATCH v7 54/74] linux-user: Split out getpgid, getpgrp, Richard Henderson, 2019/05/19
- [Qemu-devel] [PATCH v7 52/74] linux-user: Split out umask, Richard Henderson, 2019/05/19
- [Qemu-devel] [PATCH v7 59/74] linux-user: Split out sigpending, rt_sigpending, Richard Henderson, 2019/05/19
- [Qemu-devel] [PATCH v7 64/74] linux-user: Split out gethostname, sethostname, Richard Henderson, 2019/05/19
- [Qemu-devel] [PATCH v7 65/74] linux-user: Split out getrlimit, setrlimit, Richard Henderson, 2019/05/19
- [Qemu-devel] [PATCH v7 61/74] linux-user: Split out rt_sigtimedwait, Richard Henderson, 2019/05/19
- [Qemu-devel] [PATCH v7 62/74] linux-user: Split out rt_sigqueueinfo, rt_tgsigqueueinfo, Richard Henderson, 2019/05/19
- [Qemu-devel] [PATCH v7 63/74] linux-user: Split out sigreturn, rt_sigreturn, Richard Henderson, 2019/05/19
- [Qemu-devel] [PATCH v7 66/74] linux-user: Split out getrusage, Richard Henderson, 2019/05/19
- [Qemu-devel] [PATCH v7 67/74] linux-user: Split out gettimeofday, settimeofday,
Richard Henderson <=
- [Qemu-devel] [PATCH v7 69/74] linux-user: Split out pselect6, Richard Henderson, 2019/05/19
- [Qemu-devel] [PATCH v7 68/74] linux-user: Split out select, _newselect, Richard Henderson, 2019/05/19
- [Qemu-devel] [PATCH v7 70/74] linux-user: Split out symlink, symlinkat, Richard Henderson, 2019/05/19
- [Qemu-devel] [PATCH v7 71/74] linux-user: Split out swapon, swapoff, Richard Henderson, 2019/05/19
- [Qemu-devel] [PATCH v7 72/74] linux-user: Split out reboot, Richard Henderson, 2019/05/19
- [Qemu-devel] [PATCH v7 73/74] linux-user: Split out truncate, truncate64, ftruncate, ftruncate64, Richard Henderson, 2019/05/19
- [Qemu-devel] [PATCH v7 74/74] linux-user: Split out getpriority, setpriority, Richard Henderson, 2019/05/19
- Re: [Qemu-devel] [PATCH v7 00/74] linux-user: Split do_syscall, Laurent Vivier, 2019/05/20
- Re: [Qemu-devel] [PATCH v7 00/74] linux-user: Split do_syscall, Peter Maydell, 2019/05/20