diff options
| author | njoly <njoly@NetBSD.org> | 2007-11-07 00:24:29 +0000 |
|---|---|---|
| committer | njoly <njoly@NetBSD.org> | 2007-11-07 00:24:29 +0000 |
| commit | b32d95bfbf7aed71069ea7b5d733075cffc6f626 (patch) | |
| tree | b4faeecf22c938c1e097afcc3a8ef566d3863607 /sys/compat/linux32/common | |
| parent | 9b336836dfece87ee8bd7c7b99f79842ef6f6d70 (diff) | |
Remove remaining 64-bit compat linux syscalls linux_sys_xxx() (except
for ones without arguments), and replace them by their 32-bit
equivalent linux32_sys_xxxx().
Diffstat (limited to 'sys/compat/linux32/common')
| -rw-r--r-- | sys/compat/linux32/common/linux32_sched.c | 35 | ||||
| -rw-r--r-- | sys/compat/linux32/common/linux32_unistd.c | 176 |
2 files changed, 207 insertions, 4 deletions
diff --git a/sys/compat/linux32/common/linux32_sched.c b/sys/compat/linux32/common/linux32_sched.c index ebab7f0c3f1..fd5f91b1717 100644 --- a/sys/compat/linux32/common/linux32_sched.c +++ b/sys/compat/linux32/common/linux32_sched.c @@ -1,4 +1,4 @@ -/* $NetBSD: linux32_sched.c,v 1.3 2007/02/09 21:55:21 ad Exp $ */ +/* $NetBSD: linux32_sched.c,v 1.4 2007/11/07 00:24:31 njoly Exp $ */ /*- * Copyright (c) 2006 Emmanuel Dreyfus, all rights reserved. @@ -33,7 +33,7 @@ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: linux32_sched.c,v 1.3 2007/02/09 21:55:21 ad Exp $"); +__KERNEL_RCSID(0, "$NetBSD: linux32_sched.c,v 1.4 2007/11/07 00:24:31 njoly Exp $"); #include <sys/types.h> #include <sys/param.h> @@ -92,6 +92,22 @@ linux32_sys_clone(l, v, retval) } int +linux32_sys_sched_getscheduler(l, v, retval) + struct lwp *l; + void *v; + register_t *retval; +{ + struct linux32_sys_sched_getscheduler_args /* { + syscallarg(pid_t) pid; + } */ *uap = v; + struct linux_sys_sched_getscheduler_args ua; + + NETBSD32TO64_UAP(pid); + + return linux_sys_sched_getscheduler(l, &ua, retval); +} + +int linux32_sys_sched_setscheduler(l, v, retval) struct lwp *l; void *v; @@ -129,3 +145,18 @@ linux32_sys_sched_getparam(l, v, retval) return linux_sys_sched_getparam(l, &ua, retval); } +int +linux32_sys_exit_group(l, v, retval) + struct lwp *l; + void *v; + register_t *retval; +{ + struct linux32_sys_exit_group_args /* { + syscallarg(int) error_code; + } */ *uap = v; + struct linux_sys_exit_group_args ua; + + NETBSD32TO64_UAP(error_code); + + return linux_sys_exit_group(l, &ua, retval); +} diff --git a/sys/compat/linux32/common/linux32_unistd.c b/sys/compat/linux32/common/linux32_unistd.c index 1620d4fc2f3..94e81922c8a 100644 --- a/sys/compat/linux32/common/linux32_unistd.c +++ b/sys/compat/linux32/common/linux32_unistd.c @@ -1,4 +1,4 @@ -/* $NetBSD: linux32_unistd.c,v 1.12 2007/10/31 21:04:02 njoly Exp $ */ +/* $NetBSD: linux32_unistd.c,v 1.13 2007/11/07 00:24:31 njoly Exp $ */ /*- * Copyright (c) 2006 Emmanuel Dreyfus, all rights reserved. @@ -33,7 +33,7 @@ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: linux32_unistd.c,v 1.12 2007/10/31 21:04:02 njoly Exp $"); +__KERNEL_RCSID(0, "$NetBSD: linux32_unistd.c,v 1.13 2007/11/07 00:24:31 njoly Exp $"); #include <sys/types.h> #include <sys/param.h> @@ -605,3 +605,175 @@ linux32_sys_setresgid(l, v, retval) return linux_sys_setresgid(l, &ua, retval); } + +int +linux32_sys_nice(l, v, retval) + struct lwp *l; + void *v; + register_t *retval; +{ + struct linux32_sys_nice_args /* { + syscallarg(int) incr; + } */ *uap = v; + struct netbsd32_setpriority_args bsa; + + SCARG(&bsa, which) = PRIO_PROCESS; + SCARG(&bsa, who) = 0; + SCARG(&bsa, prio) = SCARG(uap, incr); + + return netbsd32_setpriority(l, &bsa, retval); +} + +int +linux32_sys_alarm(l, v, retval) + struct lwp *l; + void *v; + register_t *retval; +{ + struct linux32_sys_alarm_args /* { + syscallarg(unsigned int) secs; + } */ *uap = v; + struct linux_sys_alarm_args ua; + + NETBSD32TO64_UAP(secs); + + return linux_sys_alarm(l, &ua, retval); +} + +int +linux32_sys_fdatasync(l, v, retval) + struct lwp *l; + void *v; + register_t *retval; +{ + struct linux32_sys_fdatasync_args /* { + syscallarg(int) fd; + } */ *uap = v; + struct linux_sys_fdatasync_args ua; + + NETBSD32TO64_UAP(fd); + + return linux_sys_fdatasync(l, &ua, retval); +} + +int +linux32_sys_setfsuid(l, v, retval) + struct lwp *l; + void *v; + register_t *retval; +{ + struct linux32_sys_setfsuid_args /* { + syscallarg(uid_t) uid; + } */ *uap = v; + struct linux_sys_setfsuid_args ua; + + NETBSD32TO64_UAP(uid); + + return linux_sys_setfsuid(l, &ua, retval); +} + +int +linux32_sys_setreuid16(l, v, retval) + struct lwp *l; + void *v; + register_t *retval; +{ + struct linux32_sys_setreuid16_args /* { + syscallarg(int) ruid; + syscallarg(int) euid; + } */ *uap = v; + struct sys_setreuid_args bsa; + + if ((linux32_uid_t)SCARG(uap, ruid) == (linux32_uid_t)-1) + SCARG(&bsa, ruid) = (uid_t)-1; + else + SCARG(&bsa, ruid) = SCARG(uap, ruid); + if ((linux32_uid_t)SCARG(uap, euid) == (linux32_uid_t)-1) + SCARG(&bsa, euid) = (uid_t)-1; + else + SCARG(&bsa, euid) = SCARG(uap, euid); + + return sys_setreuid(l, &bsa, retval); +} + +int +linux32_sys_setregid16(l, v, retval) + struct lwp *l; + void *v; + register_t *retval; +{ + struct linux32_sys_setregid16_args /* { + syscallarg(int) rgid; + syscallarg(int) egid; + } */ *uap = v; + struct sys_setregid_args bsa; + + if ((linux32_gid_t)SCARG(uap, rgid) == (linux32_gid_t)-1) + SCARG(&bsa, rgid) = (gid_t)-1; + else + SCARG(&bsa, rgid) = SCARG(uap, rgid); + if ((linux32_gid_t)SCARG(uap, egid) == (linux32_gid_t)-1) + SCARG(&bsa, egid) = (gid_t)-1; + else + SCARG(&bsa, egid) = SCARG(uap, egid); + + return sys_setregid(l, &bsa, retval); +} + +int +linux32_sys_setresuid16(l, v, retval) + struct lwp *l; + void *v; + register_t *retval; +{ + struct linux32_sys_setresuid16_args /* { + syscallarg(uid_t) ruid; + syscallarg(uid_t) euid; + syscallarg(uid_t) suid; + } */ *uap = v; + struct linux32_sys_setresuid_args lsa; + + if ((linux32_uid_t)SCARG(uap, ruid) == (linux32_uid_t)-1) + SCARG(&lsa, ruid) = (uid_t)-1; + else + SCARG(&lsa, ruid) = SCARG(uap, ruid); + if ((linux32_uid_t)SCARG(uap, euid) == (linux32_uid_t)-1) + SCARG(&lsa, euid) = (uid_t)-1; + else + SCARG(&lsa, euid) = SCARG(uap, euid); + if ((linux32_uid_t)SCARG(uap, suid) == (linux32_uid_t)-1) + SCARG(&lsa, suid) = (uid_t)-1; + else + SCARG(&lsa, suid) = SCARG(uap, euid); + + return linux32_sys_setresuid(l, &lsa, retval); +} + +int +linux32_sys_setresgid16(l, v, retval) + struct lwp *l; + void *v; + register_t *retval; +{ + struct linux32_sys_setresgid16_args /* { + syscallarg(gid_t) rgid; + syscallarg(gid_t) egid; + syscallarg(gid_t) sgid; + } */ *uap = v; + struct linux32_sys_setresgid_args lsa; + + if ((linux32_gid_t)SCARG(uap, rgid) == (linux32_gid_t)-1) + SCARG(&lsa, rgid) = (gid_t)-1; + else + SCARG(&lsa, rgid) = SCARG(uap, rgid); + if ((linux32_gid_t)SCARG(uap, egid) == (linux32_gid_t)-1) + SCARG(&lsa, egid) = (gid_t)-1; + else + SCARG(&lsa, egid) = SCARG(uap, egid); + if ((linux32_gid_t)SCARG(uap, sgid) == (linux32_gid_t)-1) + SCARG(&lsa, sgid) = (gid_t)-1; + else + SCARG(&lsa, sgid) = SCARG(uap, sgid); + + return linux32_sys_setresgid(l, &lsa, retval); +} |
