summaryrefslogtreecommitdiff
path: root/linux-user
diff options
context:
space:
mode:
authorbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>2004-12-06 22:58:05 +0000
committerbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>2004-12-06 22:58:05 +0000
commit978a66ff73add1f462903af92ccf9a34f6a513c2 (patch)
treebd1998bb2337ce725cc2de989389dd872b57401b /linux-user
parentf7806f9467e059c128f7442b35ed366f2ccf06ce (diff)
downloadqemu-978a66ff73add1f462903af92ccf9a34f6a513c2.tar.gz
utimes() support
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1164 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'linux-user')
-rw-r--r--linux-user/arm/syscall_nr.h1
-rw-r--r--linux-user/i386/syscall_nr.h1
-rw-r--r--linux-user/syscall.c14
3 files changed, 16 insertions, 0 deletions
diff --git a/linux-user/arm/syscall_nr.h b/linux-user/arm/syscall_nr.h
index 13a9ee11fd..195e459ec7 100644
--- a/linux-user/arm/syscall_nr.h
+++ b/linux-user/arm/syscall_nr.h
@@ -259,3 +259,4 @@
/* 254 for set_thread_area */
/* 255 for get_thread_area */
/* 256 for set_tid_address */
+#define TARGET_NR_utimes (269)
diff --git a/linux-user/i386/syscall_nr.h b/linux-user/i386/syscall_nr.h
index c994381aa3..9fa6be96ac 100644
--- a/linux-user/i386/syscall_nr.h
+++ b/linux-user/i386/syscall_nr.h
@@ -271,3 +271,4 @@
#define TARGET_NR_clock_getres (TARGET_NR_timer_create+7)
#define TARGET_NR_clock_nanosleep (TARGET_NR_timer_create+8)
+#define TARGET_NR_utimes 271
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index b2965bbbd9..2407400c1f 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -1742,6 +1742,20 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3,
ret = get_errno(utime((const char *)arg1, tbuf1));
}
break;
+ case TARGET_NR_utimes:
+ {
+ struct target_timeval *target_tvp = (struct target_timeval *)arg2;
+ struct timeval *tvp, tv[2];
+ if (target_tvp) {
+ target_to_host_timeval(&tv[0], &target_tvp[0]);
+ target_to_host_timeval(&tv[1], &target_tvp[1]);
+ tvp = tv;
+ } else {
+ tvp = NULL;
+ }
+ ret = get_errno(utimes((const char *)arg1, tvp));
+ }
+ break;
#ifdef TARGET_NR_stty
case TARGET_NR_stty:
goto unimplemented;