Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 03 Mar 1996 03:49:31 +0800
From:      Peter Wemm <peter@jhome.DIALix.COM>
To:        Peter Wemm <peter@freefall.freebsd.org>
Cc:        CVS-committers@freefall.freebsd.org, cvs-all@freefall.freebsd.org, cvs-sys@freefall.freebsd.org
Subject:   Re: cvs commit: src/sys/conf files src/sys/i386/conf LINT Makefile.i386 files.i386 options.i386 src/sys/i386/i386 exception.s locore.s machdep.c trap.c src/sys/i386/include md_var.h pcb.h src/sys/i386/linux linux_genassym.c linux_locore.s linux_proto.h linux_syscall.h linux_sysvec.c linux_util.c linux_util.h imgact_linux.c linux.h linux_dummy.c linux_file.c linux_ioctl.c linux_ipc.c linux_misc.c linux_signal.c linux_socket.c linux_stats.c linux_sysent.c linux_generic.c sysproto.h src/sys/sys exec.h signal.h signalvar.h sysent.h src/sys/i386/ibcs2 ibcs2_sysvec.c ibcs2_util.h src/sys/kern init_sysvec.c imgact_aout.c init_sysent.c kern_exec.c kern_sig.c makesyscalls.sh 
Message-ID:  <199603021949.DAA05648@jhome.DIALix.COM>
In-Reply-To: Your message of "Sat, 02 Mar 1996 11:38:23 PST." <199603021938.LAA12493@freefall.freebsd.org> 

next in thread | previous in thread | raw e-mail | index | archive | help
>  Mega-commit for Linux emulator update..  This has been stress tested under
>  netscape-2.0 for Linux running all the Java stuff.  The scrollbars are now
>  working, at least on my machine. (whew! :-)

[...]

>  The main changes:

[...]

Oh, silly me, how could I forget..  The emulator now has *complete*
/compat/linux support for all filesystem syscalls.  This means you can create
/compat/linux/etc/host.conf and forget about it.  You can also create
/compat/linux/lib and /compat/linux/usr/lib and run the QMAGIC ldconfig
and it will work entirely within the /compat area.

>  Supporting changes elsewhere in the kernel:
>  
>  The user-mode signal trampoline has moved from the U area to immediately
>  below the top of the stack (below PS_STRINGS).  This allows the different
>  binary emulations to have their own signal trampoline code (which gets rid
>  of the hardwired syscall 103 (sigreturn on BSD, syslog on Linux)) and so
>  that the emulator can provide the exact "struct sigcontext *" argument to
>  the program's signal handlers.

I forgot to credit this:  This was inspired by what NetBSD does here, but this
is cut/paste/edit'ed from our sigsend/sigreturn code rather than theirs.  The
machdep code is too diferent to use theirs.

>  The sigstack's "ss_flags" now uses SS_DISABLE and SS_ONSTACK flags, which
>  have the same values as the re-used SA_DISABLE and SA_ONSTACK which are
>  intended for sigaction only.  This enables the support of a SA_RESETHAND
>  flag to sigaction to implement the gross SYSV and Linux SA_ONESHOT signal
>  semantics where the signal handler is reset when it's triggered.

This is directly compatable with the NetBSD implementation.  The signal
alternate stacks are not POSIX.

>  At exec time, the dozen bytes or so of signal trampoline code are copied
>  to the top of the user's stack, rather than obtaining the trampoline code
>  the old way by getting a clone of the parent's user area.  This allows
>  Linux and native binaries to freely exec each other without getting
>  trampolines mixed up.

The idea for this is also originally from NetBSD, but the implementation was
done from the ground up because our exec and i386 machdep code is quite
different to theirs.

No, there's not a lot of chance of getting this into -stable this late in the
game.  This is not the kind of thing that is going to improve it's stability.
However, some of the bugfixes may be useful.

As usual with changes in this area of the kernel, some data structures have
changed size, in particular the user area's pcb and signal structures.  This
practically guarantees the need to recompile libkvm, ps, w, and gdb.

Cheers,
-Peter



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199603021949.DAA05648>