Linux usermode clock_gettime/clock_getres emulation, by Kirill A. Shutemov.
authorths <ths@c046a42c-6fe2-441c-8c8c-71466251a162>
Mon, 19 Mar 2007 13:32:45 +0000 (13:32 +0000)
committerths <ths@c046a42c-6fe2-441c-8c8c-71466251a162>
Mon, 19 Mar 2007 13:32:45 +0000 (13:32 +0000)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2501 c046a42c-6fe2-441c-8c8c-71466251a162

Makefile.target
linux-user/syscall.c

index 38899ff..8be2835 100644 (file)
@@ -208,6 +208,7 @@ endif
 ifdef CONFIG_LINUX_USER
 OBJS= main.o syscall.o mmap.o signal.o path.o osdep.o thunk.o \
       elfload.o linuxload.o
+LIBS+= $(AIOLIBS)
 ifdef TARGET_HAS_BFLT
 OBJS+= flatload.o
 endif
index 71788a8..5eb5b39 100644 (file)
@@ -3990,6 +3990,29 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3,
         goto unimplemented_nowarn;
 #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)) {
+            host_to_target_timespec(arg2, &ts);
+        }
+        break;
+    }
+#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);
+        }
+        break;
+    }
+#endif
+
 #if defined(TARGET_NR_set_tid_address) && defined(__NR_set_tid_address)
     case TARGET_NR_set_tid_address:
       ret = get_errno(set_tid_address((int *) arg1));