summaryrefslogtreecommitdiff
path: root/lkm/ibcs2
diff options
context:
space:
mode:
Diffstat (limited to 'lkm/ibcs2')
-rw-r--r--lkm/ibcs2/Makefile24
-rwxr-xr-xlkm/ibcs2/ibcs252
-rw-r--r--lkm/ibcs2/ibcs2.863
-rw-r--r--lkm/ibcs2/ibcs2.c60
4 files changed, 199 insertions, 0 deletions
diff --git a/lkm/ibcs2/Makefile b/lkm/ibcs2/Makefile
new file mode 100644
index 0000000000000..9136c63161060
--- /dev/null
+++ b/lkm/ibcs2/Makefile
@@ -0,0 +1,24 @@
+# $Id: Makefile,v 1.16 1998/02/04 21:56:35 eivind Exp $
+
+.PATH: ${.CURDIR}/../../sys/i386/ibcs2
+KMOD= ibcs2_mod
+SRCS= ibcs2.c ibcs2_errno.c ibcs2_ipc.c ibcs2_stat.c ibcs2_misc.c \
+ ibcs2_fcntl.c ibcs2_signal.c ibcs2_sysent.c ibcs2_ioctl.c \
+ ibcs2_socksys.c ibcs2_util.c ibcs2_xenix.c ibcs2_xenix_sysent.c \
+ ibcs2_isc.c ibcs2_isc_sysent.c \
+ ibcs2_msg.c ibcs2_other.c ibcs2_sysi86.c ibcs2_sysvec.c \
+ vnode_if.h opt_spx_hack.h
+MAN8= ibcs2.8
+
+CFLAGS+= -DLKM -DCOMPAT_IBCS2
+CLEANFILES+= vnode_if.h vnode_if.c opt_spx_hack.h
+EXPORT_SYMS= _ibcs2_mod _ibcs2_emul_path _ibcs2_svr3_sysvec
+
+opt_spx_hack.h:
+ touch opt_spx_hack.h
+
+afterinstall:
+ ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
+ ${.CURDIR}/ibcs2 ${DESTDIR}/usr/bin
+
+.include <bsd.kmod.mk>
diff --git a/lkm/ibcs2/ibcs2 b/lkm/ibcs2/ibcs2
new file mode 100755
index 0000000000000..a649885512ea0
--- /dev/null
+++ b/lkm/ibcs2/ibcs2
@@ -0,0 +1,52 @@
+#!/bin/sh
+#
+# Copyright (C) 1994-1997
+# FreeBSD Inc. 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.
+# 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.
+#
+# THIS SOFTWARE IS PROVIDED BY FreeBSD Inc. AND CONTRIBUTORS ``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 FreeBSD Inc. OR CONTRIBUTORS 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$
+
+
+PATH=/bin:/sbin:/usr/bin:/usr/sbin; export PATH
+
+if [ $# -le 1 ]; then
+ LOADERS="coff" # elf
+fi
+
+set -e
+
+kernelfile=`sysctl -n kern.bootfile`
+kernelfile=`basename $kernelfile`
+newkernelfile="/tmp/_${kernelfile}+ibcs2$$"
+
+trap 'rm -f $newkernelfile; exit 1' 1 2 3 13 15
+
+rm -f $newkernelfile
+modload -e ibcs2_mod -o $newkernelfile -q /lkm/ibcs2_mod.o
+
+for loader in $LOADERS; do
+ modload -e ibcs2_${loader}_mod -o/tmp/ibcs2_${loader} -q -u \
+ -A${newkernelfile} /lkm/ibcs2_${loader}_mod.o
+done
+rm -f ${newkernelfile}
+set +e
diff --git a/lkm/ibcs2/ibcs2.8 b/lkm/ibcs2/ibcs2.8
new file mode 100644
index 0000000000000..38b586e2b88d7
--- /dev/null
+++ b/lkm/ibcs2/ibcs2.8
@@ -0,0 +1,63 @@
+.\"
+.\" Copyright (c) 1995 Lyndon Nerenberg
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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.
+.\" 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.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``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 DEVELOPERS 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: ibcs2.8,v 1.5 1998/05/19 03:31:34 jkoshy Exp $
+.\"
+.Dd November 27, 1995
+.Dt IBCS2 8
+.Os FreeBSD-Experimental
+.Sh NAME
+.Nm ibcs2
+.Nd load iBCS2 runtime support for SCO and ISC binaries
+.Sh SYNOPSIS
+.Nm ibcs2
+.Sh DESCRIPTION
+The
+.Nm
+utility loads kernel runtime support for iBCS2 compliant programs.
+This runtime support is limited to emulation of the iBCS2
+system call interface, and is far from complete. COFF binaries
+and shared libraries are supported, however no shared libraries
+are provided with the FreeBSD distribution.
+.Sh FILES
+.Bl -tag -width /usr/share/examples/ibcs2/* -compact
+.It Pa /lkm/ibcs2_mod.o
+.It Pa /lkm/ibcs2_coff_mod.o
+iBCS2 loadable kernel modules.
+.Pp
+.It Pa /usr/share/examples/ibcs2/*
+Sample object files with which to test the emulator.
+.Sh "SEE ALSO"
+.Xr lkm 4 ,
+.Xr modload 8
+.Sh BUGS
+The emulation is very incomplete.
+.Pp
+Running dynamically linked binaries requires access to an existing
+SCO system from which you can grab the shared libraries.
+.Pp
+You can't really use this without reading the source code.
diff --git a/lkm/ibcs2/ibcs2.c b/lkm/ibcs2/ibcs2.c
new file mode 100644
index 0000000000000..edc712e2d3d0f
--- /dev/null
+++ b/lkm/ibcs2/ibcs2.c
@@ -0,0 +1,60 @@
+/*-
+ * 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: ibcs2.c,v 1.10 1997/04/06 10:47:52 dufault Exp $
+ */
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/sysproto.h>
+#include <sys/conf.h>
+#include <sys/exec.h>
+#include <sys/sysent.h>
+#include <sys/lkm.h>
+
+MOD_MISC(ibcs2);
+
+static int
+ibcs2_load(struct lkm_table *lkmtp, int cmd)
+{
+ /* uprintf("ibcs2 emulator installed\n"); XXX - shut up, you! */
+ return 0;
+}
+
+static int
+ibcs2_unload(struct lkm_table *lkmtp, int cmd)
+{
+ uprintf("ibcs2 emulator removed\n");
+ return 0;
+}
+
+int
+ibcs2_mod(struct lkm_table *lkmtp, int cmd, int ver)
+{
+ MOD_DISPATCH(ibcs2, lkmtp, cmd, ver,
+ ibcs2_load, ibcs2_unload, lkm_nullcmd);
+}