aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorths <ths@c046a42c-6fe2-441c-8c8c-71466251a162>2007-03-19 13:32:45 +0000
committerths <ths@c046a42c-6fe2-441c-8c8c-71466251a162>2007-03-19 13:32:45 +0000
commitb5906f958974df6f0fef821268bd1593ebefc143 (patch)
treeac868bc2819cd3dc25e7a9500c1528ac897449eb
parentd08d3bb8511c05b95042bbd5d5c8462a6a25a934 (diff)
Linux usermode clock_gettime/clock_getres emulation, by Kirill A. Shutemov.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2501 c046a42c-6fe2-441c-8c8c-71466251a162
-rw-r--r--Makefile.target1
-rw-r--r--linux-user/syscall.c23
2 files changed, 24 insertions, 0 deletions
diff --git a/Makefile.target b/Makefile.target
index 38899ff14f..8be2835770 100644
--- a/Makefile.target
+++ b/Makefile.target
@@ -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
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 71788a8f1e..5eb5b3931f 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -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));