Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 10 May 2013 06:46:52 +0000 (UTC)
From:      Dmitry Chagin <dchagin@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r250440 - user/dchagin/lemul/sys/compat/linux
Message-ID:  <201305100646.r4A6kqxe044715@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: dchagin
Date: Fri May 10 06:46:52 2013
New Revision: 250440
URL: http://svnweb.freebsd.org/changeset/base/250440

Log:
  Get ready to commit x86_64 Linux emulation.
  Add sysctl variables for the 64-bit Linuxulator.

Modified:
  user/dchagin/lemul/sys/compat/linux/linux_mib.c
  user/dchagin/lemul/sys/compat/linux/linux_mib.h

Modified: user/dchagin/lemul/sys/compat/linux/linux_mib.c
==============================================================================
--- user/dchagin/lemul/sys/compat/linux/linux_mib.c	Fri May 10 06:45:27 2013	(r250439)
+++ user/dchagin/lemul/sys/compat/linux/linux_mib.c	Fri May 10 06:46:52 2013	(r250440)
@@ -137,7 +137,7 @@ static struct linux_prison lprison0 = {
 
 static unsigned linux_osd_jail_slot;
 
-static SYSCTL_NODE(_compat, OID_AUTO, linux, CTLFLAG_RW, 0,
+static SYSCTL_NODE(_compat, OID_AUTO, LINUX_OID, CTLFLAG_RW, 0,
 	    "Linux mode");
 
 static int	linux_set_osname(struct thread *td, char *osname);
@@ -145,7 +145,7 @@ static int	linux_set_osrelease(struct th
 static int	linux_set_oss_version(struct thread *td, int oss_version);
 
 static int
-linux_sysctl_osname(SYSCTL_HANDLER_ARGS)
+__linuxN(sysctl_osname)(SYSCTL_HANDLER_ARGS)
 {
 	char osname[LINUX_MAX_UTSNAME];
 	int error;
@@ -166,13 +166,13 @@ linux_sysctl_osname(SYSCTL_HANDLER_ARGS)
 	return (error);
 }
 
-SYSCTL_PROC(_compat_linux, OID_AUTO, osname,
+SYSCTL_PROC(LINUX_COMPAT_OID, OID_AUTO, osname,
 	    CTLTYPE_STRING | CTLFLAG_RW | CTLFLAG_PRISON | CTLFLAG_MPSAFE,
-	    0, 0, linux_sysctl_osname, "A",
+	    0, 0, __linuxN(sysctl_osname), "A",
 	    "Linux kernel OS name");
 
 static int
-linux_sysctl_osrelease(SYSCTL_HANDLER_ARGS)
+__linuxN(sysctl_osrelease)(SYSCTL_HANDLER_ARGS)
 {
 	char osrelease[LINUX_MAX_UTSNAME];
 	int error;
@@ -193,13 +193,13 @@ linux_sysctl_osrelease(SYSCTL_HANDLER_AR
 	return (error);
 }
 
-SYSCTL_PROC(_compat_linux, OID_AUTO, osrelease,
+SYSCTL_PROC(LINUX_COMPAT_OID, OID_AUTO, osrelease,
 	    CTLTYPE_STRING | CTLFLAG_RW | CTLFLAG_PRISON | CTLFLAG_MPSAFE,
-	    0, 0, linux_sysctl_osrelease, "A",
+	    0, 0, __linuxN(sysctl_osrelease), "A",
 	    "Linux kernel OS release");
 
 static int
-linux_sysctl_oss_version(SYSCTL_HANDLER_ARGS)
+__linuxN(sysctl_oss_version)(SYSCTL_HANDLER_ARGS)
 {
 	int oss_version;
 	int error;
@@ -220,9 +220,9 @@ linux_sysctl_oss_version(SYSCTL_HANDLER_
 	return (error);
 }
 
-SYSCTL_PROC(_compat_linux, OID_AUTO, oss_version,
+SYSCTL_PROC(LINUX_COMPAT_OID, OID_AUTO, oss_version,
 	    CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_PRISON | CTLFLAG_MPSAFE,
-	    0, 0, linux_sysctl_oss_version, "I",
+	    0, 0, __linuxN(sysctl_oss_version), "I",
 	    "Linux OSS version");
 
 /*
@@ -543,6 +543,15 @@ linux_prison_set(void *obj, void *data)
 	return (0);
 }
 
+#if defined(__amd64__) && !defined(COMPAT_LINUX32)
+SYSCTL_JAIL_PARAM_SYS_NODE(linux64, CTLFLAG_RW, "Jail Linux parameters");
+SYSCTL_JAIL_PARAM_STRING(_linux64, osname, CTLFLAG_RW, LINUX_MAX_UTSNAME,
+    "Jail Linux kernel OS name");
+SYSCTL_JAIL_PARAM_STRING(_linux64, osrelease, CTLFLAG_RW, LINUX_MAX_UTSNAME,
+    "Jail Linux kernel OS release");
+SYSCTL_JAIL_PARAM(_linux64, oss_version, CTLTYPE_INT | CTLFLAG_RW,
+    "I", "Jail Linux OSS version");
+#else
 SYSCTL_JAIL_PARAM_SYS_NODE(linux, CTLFLAG_RW, "Jail Linux parameters");
 SYSCTL_JAIL_PARAM_STRING(_linux, osname, CTLFLAG_RW, LINUX_MAX_UTSNAME,
     "Jail Linux kernel OS name");
@@ -550,6 +559,7 @@ SYSCTL_JAIL_PARAM_STRING(_linux, osrelea
     "Jail Linux kernel OS release");
 SYSCTL_JAIL_PARAM(_linux, oss_version, CTLTYPE_INT | CTLFLAG_RW,
     "I", "Jail Linux OSS version");
+#endif
 
 static int
 linux_prison_get(void *obj, void *data)
@@ -828,7 +838,7 @@ linux_debug(int syscall, int toggle, int
  */
 #define LINUX_MAX_DEBUGSTR	16
 static int
-linux_sysctl_debug(SYSCTL_HANDLER_ARGS)
+__linuxN(sysctl_debug)(SYSCTL_HANDLER_ARGS)
 {
 	char value[LINUX_MAX_DEBUGSTR], *p;
 	int error, sysc, toggle;
@@ -850,9 +860,9 @@ linux_sysctl_debug(SYSCTL_HANDLER_ARGS)
 	return (error);
 }
 
-SYSCTL_PROC(_compat_linux, OID_AUTO, debug,
+SYSCTL_PROC(LINUX_COMPAT_OID, OID_AUTO, debug,
             CTLTYPE_STRING | CTLFLAG_RW,
-            0, 0, linux_sysctl_debug, "A",
+            0, 0, __linuxN(sysctl_debug), "A",
             "Linux debugging control");
 
 #endif /* DEBUG || KTR */

Modified: user/dchagin/lemul/sys/compat/linux/linux_mib.h
==============================================================================
--- user/dchagin/lemul/sys/compat/linux/linux_mib.h	Fri May 10 06:45:27 2013	(r250439)
+++ user/dchagin/lemul/sys/compat/linux/linux_mib.h	Fri May 10 06:46:52 2013	(r250440)
@@ -58,4 +58,12 @@ int	linux_kernver(struct thread *td);
 
 #define	linux_use26(t)		(linux_kernver(t) >= LINUX_KERNVER_2006000)
 
+#if defined(__amd64__) && !defined(COMPAT_LINUX32)
+#define	LINUX_OID		linux64
+#else
+#define	LINUX_OID		linux
+#endif
+#define	__linuxN(x)		__CONCAT(__CONCAT(LINUX_OID,_),x)
+#define	LINUX_COMPAT_OID	__CONCAT(_compat_,LINUX_OID)
+
 #endif /* _LINUX_MIB_H_ */



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201305100646.r4A6kqxe044715>