diff options
author | bellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162> | 2003-07-09 12:26:09 +0000 |
---|---|---|
committer | bellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162> | 2003-07-09 12:26:09 +0000 |
commit | f2674e31e0b79a8e30335438f274b846d084a383 (patch) | |
tree | 9daeb06681d70422d32912029a4601072de4bb4d /linux-user | |
parent | 4690764bba3a489d5180106d08970ced59113e22 (diff) |
old select support
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@313 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'linux-user')
-rw-r--r-- | linux-user/syscall.c | 12 | ||||
-rw-r--r-- | linux-user/syscall_defs.h | 6 |
2 files changed, 17 insertions, 1 deletions
diff --git a/linux-user/syscall.c b/linux-user/syscall.c index b226429103..cd3fdf5535 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -1763,7 +1763,17 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3, } break; case TARGET_NR_select: - goto unimplemented; + { + struct target_sel_arg_struct *sel = (void *)arg1; + sel->n = tswapl(sel->n); + sel->inp = tswapl(sel->inp); + sel->outp = tswapl(sel->outp); + sel->exp = tswapl(sel->exp); + sel->tvp = tswapl(sel->tvp); + ret = do_select(sel->n, (void *)sel->inp, (void *)sel->outp, + (void *)sel->exp, (void *)sel->tvp); + } + break; case TARGET_NR_symlink: ret = get_errno(symlink((const char *)arg1, (const char *)arg2)); break; diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h index 3826c12909..5caf2d855e 100644 --- a/linux-user/syscall_defs.h +++ b/linux-user/syscall_defs.h @@ -390,6 +390,12 @@ struct target_tms { target_clock_t tms_cstime; }; +struct target_sel_arg_struct { + target_long n; + target_long inp, outp, exp; + target_long tvp; +}; + struct target_iovec { target_long iov_base; /* Starting address */ target_long iov_len; /* Number of bytes */ |