Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/rump/kern/lib/libsys_linux Add syscall wrapper for mknod...
details: https://anonhg.NetBSD.org/src/rev/269b3e6cb63f
branches: trunk
changeset: 791970:269b3e6cb63f
user: njoly <njoly%NetBSD.org@localhost>
date: Sat Dec 14 10:29:45 2013 +0000
description:
Add syscall wrapper for mknodat(2) to deal with PAD argument difference
between rump and linux versions.
diffstat:
sys/rump/kern/lib/libsys_linux/Makefile | 4 +-
sys/rump/kern/lib/libsys_linux/linux_rump.c | 45 ++++++++++++++++++++++++++
sys/rump/kern/lib/libsys_linux/syscalls.master | 6 +-
3 files changed, 50 insertions(+), 5 deletions(-)
diffs (87 lines):
diff -r ea62eb4e0e4d -r 269b3e6cb63f sys/rump/kern/lib/libsys_linux/Makefile
--- a/sys/rump/kern/lib/libsys_linux/Makefile Sat Dec 14 10:00:42 2013 +0000
+++ b/sys/rump/kern/lib/libsys_linux/Makefile Sat Dec 14 10:29:45 2013 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.2 2013/03/07 18:53:39 pooka Exp $
+# $NetBSD: Makefile,v 1.3 2013/12/14 10:29:45 njoly Exp $
#
.PATH: ${.CURDIR}/../../../../compat/linux/common
@@ -10,7 +10,7 @@
linux_mtio.c linux_signal.c linux_signo.c linux_socket.c \
linux_sysctl.c linux_termios.c linux_time.c linux_file64.c
-SRCS+= rump_linux_sysent.c component.c
+SRCS+= rump_linux_sysent.c component.c linux_rump.c
# XXX
CPPFLAGS+= -I${.CURDIR} -I${RUMPTOP}/librump/rumpkern
diff -r ea62eb4e0e4d -r 269b3e6cb63f sys/rump/kern/lib/libsys_linux/linux_rump.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/rump/kern/lib/libsys_linux/linux_rump.c Sat Dec 14 10:29:45 2013 +0000
@@ -0,0 +1,45 @@
+/* $NetBSD: linux_rump.c,v 1.1 2013/12/14 10:29:45 njoly Exp $ */
+
+#include <sys/param.h>
+
+#include <compat/linux/common/linux_types.h>
+#include <compat/linux/common/linux_signal.h>
+
+#include "rump_linux_syscallargs.h"
+
+/*
+ compat/linux/arch/.../syscallargs.h and rump_linux_syscallargs.h
+ define the same syscall arguments and prototypes, thus cannot be
+ both used. Just copy needed linux stuff for now to avoid conflicts.
+*/
+
+struct linux_sys_mknodat_args {
+ syscallarg(int) fd;
+ syscallarg(const char *) path;
+ syscallarg(mode_t) mode;
+ syscallarg(unsigned) dev;
+};
+check_syscall_args(linux_sys_mknodat)
+
+int linux_sys_mknodat(struct lwp *, const struct linux_sys_mknodat_args *, register_t *);
+
+int
+rump_linux_sys_mknodat(struct lwp *l,
+ const struct rump_linux_sys_mknodat_args *uap, register_t *retval)
+{
+ /* {
+ syscallarg(int) fd;
+ syscallarg(const char *) path;
+ syscallarg(mode_t) mode;
+ syscallarg(int) PAD;
+ syscallarg(dev_t) dev;
+ } */
+ struct linux_sys_mknodat_args ua;
+
+ SCARG(&ua, fd) = SCARG(uap, fd);
+ SCARG(&ua, path) = SCARG(uap, path);
+ SCARG(&ua, mode) = SCARG(uap, mode);
+ SCARG(&ua, dev) = SCARG(uap, dev);
+
+ return linux_sys_mknodat(l, &ua, retval);
+}
diff -r ea62eb4e0e4d -r 269b3e6cb63f sys/rump/kern/lib/libsys_linux/syscalls.master
--- a/sys/rump/kern/lib/libsys_linux/syscalls.master Sat Dec 14 10:00:42 2013 +0000
+++ b/sys/rump/kern/lib/libsys_linux/syscalls.master Sat Dec 14 10:29:45 2013 +0000
@@ -1,4 +1,4 @@
- $NetBSD: syscalls.master,v 1.8 2013/12/08 08:54:48 njoly Exp $
+ $NetBSD: syscalls.master,v 1.9 2013/12/14 10:29:45 njoly Exp $
; @(#)syscalls.master 8.2 (Berkeley) 1/13/94
@@ -589,8 +589,8 @@
458 NOARGS { int|sys||renameat(int fromfd, const char *from, \
int tofd, const char *to); }
459 UNIMPL mkfifoat
-460 NODEF { int|linux_sys||mknodat(int fd, const char *path, \
- mode_t mode, unsigned dev); }
+460 STD { int|rump_linux_sys||mknodat(int fd, const char *path, \
+ mode_t mode, int PAD, unsigned dev); }
461 NOARGS { int|sys||mkdirat(int fd, const char *path, \
mode_t mode); }
462 NODEF { int|linux_sys||faccessat(int fd, const char *path, \
Home |
Main Index |
Thread Index |
Old Index