Module Name:    src
Committed By:   njoly
Date:           Sat Dec 14 10:29:45 UTC 2013

Modified Files:
        src/sys/rump/kern/lib/libsys_linux: Makefile syscalls.master
Added Files:
        src/sys/rump/kern/lib/libsys_linux: linux_rump.c

Log Message:
Add syscall wrapper for mknodat(2) to deal with PAD argument difference
between rump and linux versions.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/sys/rump/kern/lib/libsys_linux/Makefile
cvs rdiff -u -r0 -r1.1 src/sys/rump/kern/lib/libsys_linux/linux_rump.c
cvs rdiff -u -r1.8 -r1.9 src/sys/rump/kern/lib/libsys_linux/syscalls.master

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/rump/kern/lib/libsys_linux/Makefile
diff -u src/sys/rump/kern/lib/libsys_linux/Makefile:1.2 src/sys/rump/kern/lib/libsys_linux/Makefile:1.3
--- src/sys/rump/kern/lib/libsys_linux/Makefile:1.2	Thu Mar  7 18:53:39 2013
+++ src/sys/rump/kern/lib/libsys_linux/Makefile	Sat Dec 14 10:29:45 2013
@@ -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 @@ SRCS=	linux_blkio.c linux_cdrom.c linux_
 	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

Index: src/sys/rump/kern/lib/libsys_linux/syscalls.master
diff -u src/sys/rump/kern/lib/libsys_linux/syscalls.master:1.8 src/sys/rump/kern/lib/libsys_linux/syscalls.master:1.9
--- src/sys/rump/kern/lib/libsys_linux/syscalls.master:1.8	Sun Dec  8 08:54:48 2013
+++ src/sys/rump/kern/lib/libsys_linux/syscalls.master	Sat Dec 14 10:29:45 2013
@@ -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, \

Added files:

Index: src/sys/rump/kern/lib/libsys_linux/linux_rump.c
diff -u /dev/null src/sys/rump/kern/lib/libsys_linux/linux_rump.c:1.1
--- /dev/null	Sat Dec 14 10:29:45 2013
+++ src/sys/rump/kern/lib/libsys_linux/linux_rump.c	Sat Dec 14 10:29:45 2013
@@ -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);
+}

Reply via email to