Commit 32f36bcefcd5710a00bb168bc40c407ae899b630
1 parent
bc8a22cc
added SIOCATMARK and times() syscall
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@70 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
4 changed files
with
25 additions
and
1 deletions
linux-user/ioctls.h
... | ... | @@ -66,6 +66,7 @@ |
66 | 66 | IOCTL(FIGETBSZ, IOC_R, MK_PTR(TYPE_LONG)) |
67 | 67 | #endif |
68 | 68 | |
69 | + IOCTL(SIOCATMARK, 0, TYPE_NULL) | |
69 | 70 | IOCTL(SIOCADDRT, IOC_W, MK_PTR(MK_STRUCT(STRUCT_rtentry))) |
70 | 71 | IOCTL(SIOCDELRT, IOC_W, MK_PTR(MK_STRUCT(STRUCT_rtentry))) |
71 | 72 | IOCTL(SIOCGIFNAME, IOC_RW, MK_PTR(TYPE_INT)) | ... | ... |
linux-user/syscall.c
... | ... | @@ -40,6 +40,7 @@ |
40 | 40 | #include <sys/socket.h> |
41 | 41 | #include <sys/uio.h> |
42 | 42 | #include <sys/poll.h> |
43 | +#include <sys/times.h> | |
43 | 44 | //#include <sys/user.h> |
44 | 45 | #include <netinet/tcp.h> |
45 | 46 | |
... | ... | @@ -1367,7 +1368,18 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3, |
1367 | 1368 | } |
1368 | 1369 | break; |
1369 | 1370 | case TARGET_NR_times: |
1370 | - goto unimplemented; | |
1371 | + { | |
1372 | + struct target_tms *tmsp = (void *)arg1; | |
1373 | + struct tms tms; | |
1374 | + ret = get_errno(times(&tms)); | |
1375 | + if (tmsp) { | |
1376 | + tmsp->tms_utime = tswapl(tms.tms_utime); | |
1377 | + tmsp->tms_stime = tswapl(tms.tms_stime); | |
1378 | + tmsp->tms_cutime = tswapl(tms.tms_cutime); | |
1379 | + tmsp->tms_cstime = tswapl(tms.tms_cstime); | |
1380 | + } | |
1381 | + } | |
1382 | + break; | |
1371 | 1383 | case TARGET_NR_prof: |
1372 | 1384 | goto unimplemented; |
1373 | 1385 | case TARGET_NR_setgid: | ... | ... |
linux-user/syscall_defs.h
... | ... | @@ -39,6 +39,15 @@ struct target_itimerval { |
39 | 39 | struct target_timeval it_value; |
40 | 40 | }; |
41 | 41 | |
42 | +typedef target_long target_clock_t; | |
43 | + | |
44 | +struct target_tms { | |
45 | + target_clock_t tms_utime; | |
46 | + target_clock_t tms_stime; | |
47 | + target_clock_t tms_cutime; | |
48 | + target_clock_t tms_cstime; | |
49 | +}; | |
50 | + | |
42 | 51 | struct target_iovec { |
43 | 52 | target_long iov_base; /* Starting address */ |
44 | 53 | target_long iov_len; /* Number of bytes */ | ... | ... |