Commit b5906f958974df6f0fef821268bd1593ebefc143
1 parent
d08d3bb8
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
Showing
2 changed files
with
24 additions
and
0 deletions
Makefile.target
@@ -208,6 +208,7 @@ endif | @@ -208,6 +208,7 @@ endif | ||
208 | ifdef CONFIG_LINUX_USER | 208 | ifdef CONFIG_LINUX_USER |
209 | OBJS= main.o syscall.o mmap.o signal.o path.o osdep.o thunk.o \ | 209 | OBJS= main.o syscall.o mmap.o signal.o path.o osdep.o thunk.o \ |
210 | elfload.o linuxload.o | 210 | elfload.o linuxload.o |
211 | +LIBS+= $(AIOLIBS) | ||
211 | ifdef TARGET_HAS_BFLT | 212 | ifdef TARGET_HAS_BFLT |
212 | OBJS+= flatload.o | 213 | OBJS+= flatload.o |
213 | endif | 214 | endif |
linux-user/syscall.c
@@ -3990,6 +3990,29 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3, | @@ -3990,6 +3990,29 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3, | ||
3990 | goto unimplemented_nowarn; | 3990 | goto unimplemented_nowarn; |
3991 | #endif | 3991 | #endif |
3992 | 3992 | ||
3993 | +#ifdef TARGET_NR_clock_gettime | ||
3994 | + case TARGET_NR_clock_gettime: | ||
3995 | + { | ||
3996 | + struct timespec ts; | ||
3997 | + ret = get_errno(clock_gettime(arg1, &ts)); | ||
3998 | + if (!is_error(ret)) { | ||
3999 | + host_to_target_timespec(arg2, &ts); | ||
4000 | + } | ||
4001 | + break; | ||
4002 | + } | ||
4003 | +#endif | ||
4004 | +#ifdef TARGET_NR_clock_getres | ||
4005 | + case TARGET_NR_clock_getres: | ||
4006 | + { | ||
4007 | + struct timespec ts; | ||
4008 | + ret = get_errno(clock_getres(arg1, &ts)); | ||
4009 | + if (!is_error(ret)) { | ||
4010 | + host_to_target_timespec(arg2, &ts); | ||
4011 | + } | ||
4012 | + break; | ||
4013 | + } | ||
4014 | +#endif | ||
4015 | + | ||
3993 | #if defined(TARGET_NR_set_tid_address) && defined(__NR_set_tid_address) | 4016 | #if defined(TARGET_NR_set_tid_address) && defined(__NR_set_tid_address) |
3994 | case TARGET_NR_set_tid_address: | 4017 | case TARGET_NR_set_tid_address: |
3995 | ret = get_errno(set_tid_address((int *) arg1)); | 4018 | ret = get_errno(set_tid_address((int *) arg1)); |