summaryrefslogtreecommitdiff
path: root/sys/compat/linux32/common
diff options
context:
space:
mode:
authornjoly <njoly@NetBSD.org>2007-11-07 00:24:29 +0000
committernjoly <njoly@NetBSD.org>2007-11-07 00:24:29 +0000
commitb32d95bfbf7aed71069ea7b5d733075cffc6f626 (patch)
treeb4faeecf22c938c1e097afcc3a8ef566d3863607 /sys/compat/linux32/common
parent9b336836dfece87ee8bd7c7b99f79842ef6f6d70 (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.c35
-rw-r--r--sys/compat/linux32/common/linux32_unistd.c176
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);
+}