summaryrefslogtreecommitdiffstats
path: root/lkm
diff options
context:
space:
mode:
authorsos <sos@FreeBSD.org>1995-06-25 17:32:43 +0000
committersos <sos@FreeBSD.org>1995-06-25 17:32:43 +0000
commitf14ea10694ed07a2d0627c9efa2b79c03b19639d (patch)
treea104b48d590fdc08acc1a23e9f4430c22923749e /lkm
parentc54e2295b7f2db09802e0bc1874072840e4d75f7 (diff)
downloadFreeBSD-src-f14ea10694ed07a2d0627c9efa2b79c03b19639d.zip
FreeBSD-src-f14ea10694ed07a2d0627c9efa2b79c03b19639d.tar.gz
First incarnation of our Linux emulator or rather compatibility code.
This first shot only incorporaties so much functionality that DOOM can run (the X version), signal handling is VERY weak, so is many other things. But it meets my milestone number one (you guessed it - running DOOM). Uses /compat/linux as prefix for loading shared libs, so it won't conflict with our own libs. Kernel must be compiled with "options COMPAT_LINUX" for this to work.
Diffstat (limited to 'lkm')
-rw-r--r--lkm/Makefile4
-rw-r--r--lkm/linux/Makefile16
-rw-r--r--lkm/linux/linux3
-rw-r--r--lkm/linux/linux.c58
4 files changed, 79 insertions, 2 deletions
diff --git a/lkm/Makefile b/lkm/Makefile
index da92672..c9ebc81 100644
--- a/lkm/Makefile
+++ b/lkm/Makefile
@@ -1,7 +1,7 @@
-# $Id: Makefile,v 1.9 1995/03/20 19:25:38 wollman Exp $
+# $Id: Makefile,v 1.10 1995/06/13 20:51:13 wollman Exp $
SUBDIR= cd9660 coff fdesc ibcs2 if_disc if_ppp if_sl if_tun \
- ipfw kernfs msdos nfs nullfs \
+ ipfw kernfs linux msdos nfs nullfs \
portal procfs socksys syscons umapfs union
#
# Doesn't work:
diff --git a/lkm/linux/Makefile b/lkm/linux/Makefile
new file mode 100644
index 0000000..11650c5
--- /dev/null
+++ b/lkm/linux/Makefile
@@ -0,0 +1,16 @@
+# $Id$
+
+.PATH: ${.CURDIR}/../../sys/i386/linux
+KMOD= linux_mod
+SRCS= linux.c linux_file.c linux_ioctl.c linux_misc.c linux_signal.c \
+ linux_generic.c linux_ipc.c linux_socket.c linux_stats.c \
+ linux_dummy.c linux_sysent.c imgact_linux.c vnode_if.h
+NOMAN=
+CFLAGS+= -DLKM -I. -DCOMPAT_LINUX -DSYSVSHM #-DSYSVMSG -DSYSVSEM #-DDEBUG
+CLEANFILES+= vnode_if.h vnode_if.c
+
+afterinstall:
+ ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
+ ${.CURDIR}/linux /usr/bin
+
+.include <bsd.kmod.mk>
diff --git a/lkm/linux/linux b/lkm/linux/linux
new file mode 100644
index 0000000..e4c3606
--- /dev/null
+++ b/lkm/linux/linux
@@ -0,0 +1,3 @@
+#!/bin/sh
+# $Id$
+modload -e linux_init /lkm/linux_mod.o
diff --git a/lkm/linux/linux.c b/lkm/linux/linux.c
new file mode 100644
index 0000000..183ad3e
--- /dev/null
+++ b/lkm/linux/linux.c
@@ -0,0 +1,58 @@
+/*-
+ * Copyright (c) 1994 Søren Schmidt
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer
+ * in this position and unchanged.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software withough specific prior written permission
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $Id: linux.c,v 1.1 1994/10/14 08:46:12 sos Exp $
+ */
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/exec.h>
+#include <sys/conf.h>
+#include <sys/sysent.h>
+#include <sys/lkm.h>
+#include <sys/errno.h>
+
+extern const struct execsw linux_execsw;
+
+MOD_EXEC("linux_emulator", -1, (struct execsw*)&linux_execsw)
+
+linux_load(struct lkm_table *lkmtp, int cmd)
+{
+ uprintf("Linux emulator installed\n");
+ return 0;
+}
+
+linux_unload(struct lkm_table *lkmtp, int cmd)
+{
+ uprintf("Linux emulator removed\n");
+ return 0;
+}
+
+linux_init(struct lkm_table *lkmtp, int cmd, int ver)
+{
+ DISPATCH(lkmtp, cmd, ver, linux_load, linux_unload, nosys);
+}
OpenPOWER on IntegriCloud