aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--linux-user/ioctls.h1
-rw-r--r--linux-user/syscall.c14
-rw-r--r--linux-user/syscall_defs.h9
-rw-r--r--syscall-i386.h2
4 files changed, 25 insertions, 1 deletions
diff --git a/linux-user/ioctls.h b/linux-user/ioctls.h
index f075aff..b9aadb7 100644
--- a/linux-user/ioctls.h
+++ b/linux-user/ioctls.h
@@ -66,6 +66,7 @@
IOCTL(FIGETBSZ, IOC_R, MK_PTR(TYPE_LONG))
#endif
+ IOCTL(SIOCATMARK, 0, TYPE_NULL)
IOCTL(SIOCADDRT, IOC_W, MK_PTR(MK_STRUCT(STRUCT_rtentry)))
IOCTL(SIOCDELRT, IOC_W, MK_PTR(MK_STRUCT(STRUCT_rtentry)))
IOCTL(SIOCGIFNAME, IOC_RW, MK_PTR(TYPE_INT))
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 898dbcd..16958be 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -40,6 +40,7 @@
#include <sys/socket.h>
#include <sys/uio.h>
#include <sys/poll.h>
+#include <sys/times.h>
//#include <sys/user.h>
#include <netinet/tcp.h>
@@ -1367,7 +1368,18 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3,
}
break;
case TARGET_NR_times:
- goto unimplemented;
+ {
+ struct target_tms *tmsp = (void *)arg1;
+ struct tms tms;
+ ret = get_errno(times(&tms));
+ if (tmsp) {
+ tmsp->tms_utime = tswapl(tms.tms_utime);
+ tmsp->tms_stime = tswapl(tms.tms_stime);
+ tmsp->tms_cutime = tswapl(tms.tms_cutime);
+ tmsp->tms_cstime = tswapl(tms.tms_cstime);
+ }
+ }
+ break;
case TARGET_NR_prof:
goto unimplemented;
case TARGET_NR_setgid:
diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h
index 2c442d8..a442683 100644
--- a/linux-user/syscall_defs.h
+++ b/linux-user/syscall_defs.h
@@ -39,6 +39,15 @@ struct target_itimerval {
struct target_timeval it_value;
};
+typedef target_long target_clock_t;
+
+struct target_tms {
+ target_clock_t tms_utime;
+ target_clock_t tms_stime;
+ target_clock_t tms_cutime;
+ target_clock_t tms_cstime;
+};
+
struct target_iovec {
target_long iov_base; /* Starting address */
target_long iov_len; /* Number of bytes */
diff --git a/syscall-i386.h b/syscall-i386.h
index 0fb57ce..9bc35f1 100644
--- a/syscall-i386.h
+++ b/syscall-i386.h
@@ -1065,3 +1065,5 @@ union target_semun {
#define TARGET_VFAT_IOCTL_READDIR_BOTH 0x82187201
#define TARGET_VFAT_IOCTL_READDIR_SHORT 0x82187202
+
+#define TARGET_SIOCATMARK 0x8905