[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 089/108] linux-user: Split out clock syscalls
From: |
Richard Henderson |
Subject: |
[Qemu-devel] [PATCH v2 089/108] linux-user: Split out clock syscalls |
Date: |
Sat, 9 Jun 2018 17:02:01 -1000 |
This includes clock_getres, clock_gettime, clock_nanosleep, clock_settime.
All targets define all of these; remove the ifdefs.
Signed-off-by: Richard Henderson <address@hidden>
---
linux-user/syscall.c | 115 ++++++++++++++++++++++---------------------
1 file changed, 60 insertions(+), 55 deletions(-)
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 285612dfe5..6f19f75c67 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -7855,6 +7855,62 @@ IMPL(clock_adjtime)
}
#endif
+IMPL(clock_getres)
+{
+ struct timespec ts;
+ abi_long ret;
+
+ ret = get_errno(clock_getres(arg1, &ts));
+ if (!is_error(ret)) {
+ ret = host_to_target_timespec(arg2, &ts);
+ }
+ return ret;
+}
+
+IMPL(clock_gettime)
+{
+ struct timespec ts;
+ abi_long ret;
+
+ ret = get_errno(clock_gettime(arg1, &ts));
+ if (!is_error(ret)) {
+ ret = host_to_target_timespec(arg2, &ts);
+ }
+ return ret;
+}
+
+IMPL(clock_nanosleep)
+{
+ struct timespec ts;
+ abi_long ret;
+
+ target_to_host_timespec(&ts, arg3);
+ ret = get_errno(safe_clock_nanosleep(arg1, arg2, &ts, arg4 ? &ts : NULL));
+ if (arg4) {
+ host_to_target_timespec(arg4, &ts);
+ }
+#if defined(TARGET_PPC)
+ /* clock_nanosleep is odd in that it returns positive errno values.
+ * On PPC, CR0 bit 3 should be set in such a situation. */
+ if (ret && ret != -TARGET_ERESTARTSYS) {
+ ((CPUPPCState *)cpu_env)->crf[0] |= 1;
+ }
+#endif
+ return ret;
+}
+
+IMPL(clock_settime)
+{
+ struct timespec ts;
+ abi_long ret;
+
+ ret = target_to_host_timespec(&ts, arg2);
+ if (!is_error(ret)) {
+ ret = get_errno(clock_settime(arg1, &ts));
+ }
+ return ret;
+}
+
IMPL(clone)
{
/* Linux manages to have three different orderings for its
@@ -12504,61 +12560,6 @@ static abi_long do_syscall1(void *cpu_env, unsigned
num, abi_long arg1,
void *p;
switch(num) {
-#ifdef TARGET_NR_clock_settime
- case TARGET_NR_clock_settime:
- {
- struct timespec ts;
-
- ret = target_to_host_timespec(&ts, arg2);
- if (!is_error(ret)) {
- ret = get_errno(clock_settime(arg1, &ts));
- }
- return ret;
- }
-#endif
-#ifdef TARGET_NR_clock_gettime
- case TARGET_NR_clock_gettime:
- {
- struct timespec ts;
- ret = get_errno(clock_gettime(arg1, &ts));
- if (!is_error(ret)) {
- ret = host_to_target_timespec(arg2, &ts);
- }
- return ret;
- }
-#endif
-#ifdef TARGET_NR_clock_getres
- case TARGET_NR_clock_getres:
- {
- struct timespec ts;
- ret = get_errno(clock_getres(arg1, &ts));
- if (!is_error(ret)) {
- host_to_target_timespec(arg2, &ts);
- }
- return ret;
- }
-#endif
-#ifdef TARGET_NR_clock_nanosleep
- case TARGET_NR_clock_nanosleep:
- {
- struct timespec ts;
- target_to_host_timespec(&ts, arg3);
- ret = get_errno(safe_clock_nanosleep(arg1, arg2,
- &ts, arg4 ? &ts : NULL));
- if (arg4)
- host_to_target_timespec(arg4, &ts);
-
-#if defined(TARGET_PPC)
- /* clock_nanosleep is odd in that it returns positive errno values.
- * On PPC, CR0 bit 3 should be set in such a situation. */
- if (ret && ret != -TARGET_ERESTARTSYS) {
- ((CPUPPCState *)cpu_env)->crf[0] |= 1;
- }
-#endif
- return ret;
- }
-#endif
-
#if defined(TARGET_NR_set_tid_address) && defined(__NR_set_tid_address)
case TARGET_NR_set_tid_address:
return get_errno(set_tid_address((int *)g2h(arg1)));
@@ -13292,6 +13293,10 @@ static impl_fn *syscall_table(unsigned num)
#ifdef CONFIG_CLOCK_ADJTIME
SYSCALL(clock_adjtime);
#endif
+ SYSCALL(clock_getres);
+ SYSCALL(clock_gettime);
+ SYSCALL(clock_nanosleep);
+ SYSCALL(clock_settime);
SYSCALL(clone);
SYSCALL(close);
SYSCALL(chdir);
--
2.17.1
- [Qemu-devel] [PATCH v2 079/108] linux-user: Split out getegid32, geteuid32, getgid32, setregid32, setreuid32, (continued)
- [Qemu-devel] [PATCH v2 079/108] linux-user: Split out getegid32, geteuid32, getgid32, setregid32, setreuid32, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 080/108] linux-user: Split out fchown32, getgroups32, setgroups32, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 078/108] linux-user: Split out osf_getsysinfo, osf_setsysinfo, osf_sigprocmask, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 081/108] linux-user: Split out getresgid32, getresuid32, setresgid32, setresuid32, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 082/108] linux-user: Split out chown32, setfsgid32, setfsuid32, setgid32, setuid32, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 083/108] linux-user: Split out mincore, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 084/108] linux-user: Split out fadvise64, fadvise64_64, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 085/108] linux-user: Split out cacheflush, fcntl64, getpagesize, madvise, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 086/108] linux-user: Split out gettid, readahead, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 087/108] linux-user: Split out xattr syscalls, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 089/108] linux-user: Split out clock syscalls,
Richard Henderson <=
- [Qemu-devel] [PATCH v2 090/108] linux-user: Fix clock_nanosleep, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 088/108] linux-user: Split out getdomainname, get_thread_area, set_thread_area, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 091/108] linux-user: Split out set_tid_address, tgkill, tkill, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 092/108] linux-user: Split out futex, utimensat, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 093/108] linux-user: Remove sys_futex, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 094/108] linux-user: Split out inotify syscalls, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 095/108] linux-user: Split out mq syscalls, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 096/108] linux-user: Split out splice, tee, vmsplice, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 097/108] linux-user: Split out eventfd, eventfd2, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 099/108] linux-user: Split out signalfd, signalfd4, Richard Henderson, 2018/06/09