diff options
Diffstat (limited to 'lkm/ibcs2')
| -rw-r--r-- | lkm/ibcs2/Makefile | 24 | ||||
| -rwxr-xr-x | lkm/ibcs2/ibcs2 | 52 | ||||
| -rw-r--r-- | lkm/ibcs2/ibcs2.8 | 63 | ||||
| -rw-r--r-- | lkm/ibcs2/ibcs2.c | 60 | 
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); +} | 
