added SIOCATMARK and times() syscall
authorbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>
Sun, 30 Mar 2003 21:29:48 +0000 (21:29 +0000)
committerbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>
Sun, 30 Mar 2003 21:29:48 +0000 (21:29 +0000)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@70 c046a42c-6fe2-441c-8c8c-71466251a162

linux-user/ioctls.h
linux-user/syscall.c
linux-user/syscall_defs.h
syscall-i386.h

index f075aff..b9aadb7 100644 (file)
@@ -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))
index 898dbcd..16958be 100644 (file)
@@ -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:
index 2c442d8..a442683 100644 (file)
@@ -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 */
index 0fb57ce..9bc35f1 100644 (file)
@@ -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