svn commit: r250440 - user/dchagin/lemul/sys/compat/linux
Dmitry Chagin
dchagin at FreeBSD.org
Fri May 10 06:46:52 UTC 2013
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_ */
More information about the svn-src-user
mailing list