PERFORCE change 99747 for review
Roman Divacky
rdivacky at FreeBSD.org
Wed Jun 21 11:30:07 UTC 2006
http://perforce.freebsd.org/chv.cgi?CH=99747
Change 99747 by rdivacky at rdivacky_witten on 2006/06/21 11:29:20
Back-out revisions 99144 and 99406.
Affected files ...
.. //depot/projects/soc2006/rdivacky_linuxolator/amd64/linux32/linux32_sysvec.c#4 edit
.. //depot/projects/soc2006/rdivacky_linuxolator/compat/linprocfs/linprocfs.c#3 edit
.. //depot/projects/soc2006/rdivacky_linuxolator/compat/linux/linux_mib.c#4 edit
.. //depot/projects/soc2006/rdivacky_linuxolator/compat/linux/linux_util.c#4 edit
.. //depot/projects/soc2006/rdivacky_linuxolator/compat/linux/linux_util.h#3 edit
.. //depot/projects/soc2006/rdivacky_linuxolator/i386/linux/linux_sysvec.c#4 edit
Differences ...
==== //depot/projects/soc2006/rdivacky_linuxolator/amd64/linux32/linux32_sysvec.c#4 (text+ko) ====
@@ -1018,7 +1018,7 @@
ELFOSABI_LINUX,
EM_386,
"Linux",
- "/compat/linux/",
+ "/compat/linux",
"/lib/ld-linux.so.1",
&elf_linux_sysvec,
NULL,
@@ -1029,7 +1029,7 @@
ELFOSABI_LINUX,
EM_386,
"Linux",
- "/compat/linux/",
+ "/compat/linux",
"/lib/ld-linux.so.2",
&elf_linux_sysvec,
NULL,
==== //depot/projects/soc2006/rdivacky_linuxolator/compat/linprocfs/linprocfs.c#3 (text+ko) ====
@@ -281,9 +281,7 @@
char *dlep, *flep, *mntto, *mntfrom, *fstype;
size_t lep_len;
int error;
- char linux_emul_path[LINUX_NAME_MAX];
- linux_get_emul_path(td, linux_emul_path);
/* resolve symlinks etc. in the emulation tree prefix */
NDINIT(&nd, LOOKUP, FOLLOW, UIO_SYSSPACE, linux_emul_path, td);
flep = NULL;
==== //depot/projects/soc2006/rdivacky_linuxolator/compat/linux/linux_mib.c#4 (text+ko) ====
@@ -38,10 +38,7 @@
#include <sys/jail.h>
#include <sys/lock.h>
#include <sys/mutex.h>
-#include <sys/imgact.h>
-#include <sys/imgact_elf.h>
-extern Elf32_Brandinfo *linux_brandlist[];
#include "opt_compat.h"
#ifdef COMPAT_LINUX32
@@ -55,7 +52,6 @@
char pr_osname[LINUX_MAX_UTSNAME];
char pr_osrelease[LINUX_MAX_UTSNAME];
int pr_oss_version;
- char pr_emul_path[LINUX_NAME_MAX];
};
SYSCTL_NODE(_compat, OID_AUTO, linux, CTLFLAG_RW, 0,
@@ -85,61 +81,6 @@
0, 0, linux_sysctl_osname, "A",
"Linux kernel OS name");
-char linux_emul_path[LINUX_NAME_MAX] = "/compat/linux/";
-
-static int
-linux_sysctl_linux_emul_path(SYSCTL_HANDLER_ARGS)
-{
- static char emul_path[LINUX_NAME_MAX];
- int error;
- Elf32_Brandinfo **brandinfo;
-
- linux_get_emul_path(req->td, emul_path);
- error = sysctl_handle_string(oidp, emul_path, LINUX_NAME_MAX, req);
- if (error || req->newptr == NULL)
- return (error);
- error = linux_set_emul_path(req->td, emul_path);
- {
- static Elf32_Brandinfo linux_brand = {
- ELFOSABI_LINUX,
- EM_386,
- "Linux",
- emul_path,
- "/lib/ld-linux.so.1",
- &elf_linux_sysvec,
- NULL,
- BI_CAN_EXEC_DYN,
- };
- static Elf32_Brandinfo linux_glibc2brand = {
- ELFOSABI_LINUX,
- EM_386,
- "Linux",
- emul_path,
- "/lib/ld-linux.so.2",
- &elf_linux_sysvec,
- NULL,
- BI_CAN_EXEC_DYN,
- };
-
- Elf32_Brandinfo *local_linux_brandlist[] = {
- &linux_brand,
- &linux_glibc2brand,
- NULL
- };
-
- for (brandinfo = &local_linux_brandlist[0]; *brandinfo != NULL;
- ++brandinfo)
- if (elf32_insert_brand_entry(*brandinfo) < 0)
- error = EINVAL;
- }
- return (error);
-}
-
-SYSCTL_PROC(_compat_linux, OID_AUTO, emulpath,
- CTLTYPE_STRING | CTLFLAG_RW | CTLFLAG_PRISON,
- 0, 0, linux_sysctl_linux_emul_path, "A",
- "Linux kernel OS emulation path");
-
static char linux_osrelease[LINUX_MAX_UTSNAME] = "2.4.2";
static int
@@ -305,51 +246,6 @@
return (0);
}
-void
-linux_get_emul_path(struct thread *td, char *dst)
-{
- register struct prison *pr;
- register struct linux_prison *lpr;
-
- pr = td->td_ucred->cr_prison;
- if (pr != NULL) {
- mtx_lock(&pr->pr_mtx);
- if (pr->pr_linux != NULL) {
- lpr = (struct linux_prison *)pr->pr_linux;
- if (lpr->pr_emul_path[0]) {
- bcopy(lpr->pr_emul_path, dst, LINUX_NAME_MAX);
- mtx_unlock(&pr->pr_mtx);
- return;
- }
- }
- mtx_unlock(&pr->pr_mtx);
- }
-
- mtx_lock(&osname_lock);
- bcopy(linux_emul_path, dst, LINUX_NAME_MAX);
- mtx_unlock(&osname_lock);
-}
-
-int
-linux_set_emul_path(struct thread *td, char *emul_path)
-{
- struct prison *pr;
- struct linux_prison *lpr;
-
- pr = linux_get_prison(td);
- if (pr != NULL) {
- lpr = (struct linux_prison *)pr->pr_linux;
- strcpy(lpr->pr_emul_path, emul_path);
- mtx_unlock(&pr->pr_mtx);
- } else {
- mtx_lock(&osname_lock);
- strcpy(linux_emul_path, emul_path);
- mtx_unlock(&osname_lock);
- }
-
- return (0);
-}
-
int
linux_get_oss_version(struct thread *td)
{
==== //depot/projects/soc2006/rdivacky_linuxolator/compat/linux/linux_util.c#4 (text+ko) ====
@@ -47,12 +47,6 @@
#include <machine/stdarg.h>
#include <compat/linux/linux_util.h>
-#ifdef COMPAT_LINUX32
-#include <machine/../linux32/linux.h>
-#else
-#include <machine/../linux/linux.h>
-#endif
-#include <compat/linux/linux_mib.h>
/*
* Search an alternate path before passing pathname arguments on
@@ -70,9 +64,6 @@
char **pbuf;
int cflag;
{
- char linux_emul_path[LINUX_NAME_MAX];
-
- linux_get_emul_path(td, linux_emul_path);
return (kern_alternate_path(td, linux_emul_path, path, pathseg, pbuf,
cflag));
@@ -92,6 +83,8 @@
printf("\n");
}
+MALLOC_DECLARE(M_LINUX);
+
struct device_element
{
TAILQ_ENTRY(device_element) list;
==== //depot/projects/soc2006/rdivacky_linuxolator/compat/linux/linux_util.h#3 (text+ko) ====
@@ -75,6 +75,8 @@
return p;
}
+extern const char linux_emul_path[];
+
int linux_emul_convpath(struct thread *, char *, enum uio_seg, char **, int);
#define LCONVPATH(td, upath, pathp, i) \
==== //depot/projects/soc2006/rdivacky_linuxolator/i386/linux/linux_sysvec.c#4 (text+ko) ====
@@ -858,7 +858,7 @@
ELFOSABI_LINUX,
EM_386,
"Linux",
- "/compat/linux/",
+ "/compat/linux",
"/lib/ld-linux.so.1",
&elf_linux_sysvec,
NULL,
@@ -869,7 +869,7 @@
ELFOSABI_LINUX,
EM_386,
"Linux",
- "/compat/linux/",
+ "/compat/linux",
"/lib/ld-linux.so.2",
&elf_linux_sysvec,
NULL,
More information about the p4-projects
mailing list