7b445033ff
allocated from exec_map. If many threads try to perform execve(2) in parallel, the exec map is exhausted and some threads sleep uninterruptible waiting for the map space. Then, the thread which won the race for the space allocation, cannot single-thread the process, causing deadlock. Reported and tested by: pho (previous version) Sponsored by: The FreeBSD Foundation MFC after: 2 weeks |
||
---|---|---|
.. | ||
imgact_svr4.c | ||
Makefile | ||
README | ||
svr4_acl.h | ||
svr4_dirent.h | ||
svr4_errno.h | ||
svr4_exec.h | ||
svr4_fcntl.c | ||
svr4_fcntl.h | ||
svr4_filio.c | ||
svr4_filio.h | ||
svr4_fuser.h | ||
svr4_hrt.h | ||
svr4_ioctl.c | ||
svr4_ioctl.h | ||
svr4_ipc.c | ||
svr4_ipc.h | ||
svr4_misc.c | ||
svr4_mman.h | ||
svr4_proto.h | ||
svr4_resource.c | ||
svr4_resource.h | ||
svr4_siginfo.h | ||
svr4_signal.c | ||
svr4_signal.h | ||
svr4_socket.c | ||
svr4_socket.h | ||
svr4_sockio.c | ||
svr4_sockio.h | ||
svr4_sockmod.h | ||
svr4_stat.c | ||
svr4_stat.h | ||
svr4_statvfs.h | ||
svr4_stream.c | ||
svr4_stropts.h | ||
svr4_syscall.h | ||
svr4_syscallnames.c | ||
svr4_sysconfig.h | ||
svr4_sysent.c | ||
svr4_systeminfo.h | ||
svr4_sysvec.c | ||
svr4_termios.c | ||
svr4_termios.h | ||
svr4_time.h | ||
svr4_timod.h | ||
svr4_types.h | ||
svr4_ucontext.h | ||
svr4_ulimit.h | ||
svr4_ustat.h | ||
svr4_util.h | ||
svr4_utsname.h | ||
svr4_wait.h | ||
svr4.h | ||
syscalls.conf | ||
syscalls.master | ||
TO-DO |
This is a SysVR4 emulator derived from work done as part of the NetBSD Project by Christos Zoulas. It has been ported to FreeBSD by Mark Newton. To use it: 1. Choose one of: a. Add "device streams" to your kernel config file and rebuild, reboot; or b. Build and install the streams module in /sys/modules/streams 2. Build and install the svr4 module in /sys/modules/svr4 3. Type "kldload svr4" to start it up. 4. Grab compat_sol26.tar.gz or compat_svr4.tar.gz from http://www.freebsd.org/~newton/freebsd-svr4 and install them in /compat/svr4 5. Run "sh SVR4_MAKEDEV all" in /compat/svr4/dev 6. Mount a Solaris/x86 v2.6 or v7 CD-ROM on /cdrom (also works with v2.4 and v2.5.1, but you need different symlinks in /compat/svr4) 7. Brand any executables you want to run, and/or set the kern.fallback_elf_brand sysctl to 'SVR4' to establish this as the default emulator for unbranded executables. 8. See if your SysVR4 programs work. It's early days yet, folks -- You'll probably have trouble getting 100% functionality out of most things (specifically, poll() on a socket doesn't look like it works at the moment, so Netscape doesn't work (among other things)). Patches will be appreciated. - Mark Newton newton@atdot.dotat.org $FreeBSD$