Peter Wemm [Sat, 26 Apr 1997 19:26:37 +0000 (19:26 +0000)]
change #if 0 to #ifdef KERNEL since this is pretty important for
smp compiling. It still leaves dset non-functional on smp kernels, but
we've been doing that all along with the private smp tree anyway.
Steve Passe [Sat, 26 Apr 1997 19:07:36 +0000 (19:07 +0000)]
#if'ed out the '#include "opt_smp.h"' line.
The SMP source was merged into 3.0-current last nite and this broke
the make of sbin/dset.
Should make things work for non-SMP case.
People making SMP kernels will need to edit i386/isa/isa_device.h, re-enabling
'#include "opt_smp.h"'. People making SMP worlds will have to punt for now...
I'm thinking about the real solution, but for now the goal is to NOT break
the world!
Do nothing instead of adjusting un_flags when (uppervp is locked) &&
(UN_ULOCK is not set) in union_lock. This condition may indicate
race. DIAGNOSTIC kernel still panic here.
David Nugent [Sat, 26 Apr 1997 12:12:10 +0000 (12:12 +0000)]
Adds optional "internal ls" support for ftpd, by collecting
modules from src/bin/ls, and handling exec(_PATH_LS,..) as a
special case, very useful in an environment where many users
are given chroot access. "~/etc/{s}pwd.db" files are still
needed if uid/gid->user/group translation is desired.
To enable this it must be compiled with the make variable
FTP_INTERNAL_LS defined, either in /etc/make.conf or the
environment.
Peter Wemm [Sat, 26 Apr 1997 11:46:25 +0000 (11:46 +0000)]
Man the liferafts! Here comes the long awaited SMP -> -current merge!
There are various options documented in i386/conf/LINT, there is more to
come over the next few days.
The kernel should run pretty much "as before" without the options to
activate SMP mode.
There are a handful of known "loose ends" that need to be fixed, but
have been put off since the SMP kernel is in a moderately good condition
at the moment.
This commit is the result of the tinkering and testing over the last 14
months by many people. A special thanks to Steve Passe for implementing
the APIC code!
Print out some more diagnostic information when we reject a message.
When we request sense, don't allow disconnection. This closes a window
where we might allow an overlapped tagged and non-tagged transaction.
The correct fix is to freeze the queue for the target that requests sense
which is what will happen in the new CAM framework.
Our vput calls vm_object_deallocate() --> vm_object_terminate(). The
vm_object_terminate() calls vn_lock(), since UN_LOCKED has been
already cleared in union_unlock(). Then, union_lock locks upper vnode
when UN_ULOCK is not set. The upper vnode is not unlocked when
UN_KLOCK is set in union_unlock(), thus, union_lock tries to lock
locked vnode and we get panic.
Bruce Evans [Fri, 25 Apr 1997 20:20:21 +0000 (20:20 +0000)]
Fixed `make depend'. The previous change reduced it to making only
config.h (which isn't used directly). Added a comment about the
indirect use of config.h.
Bruce Evans [Fri, 25 Apr 1997 19:43:19 +0000 (19:43 +0000)]
Don't complain about no input files for `ld -f'. This fixes spurious
(ignored :-() errors for `make depend' in /sys/i386/boot/*. It's
natural for there to be no libraries there and inconvenient to check
for this in bsd.prog.mk.
John Polstra [Fri, 25 Apr 1997 15:26:12 +0000 (15:26 +0000)]
Fill the padding at the end of the runtime strings with zeros,
instead of leaving random data there. This makes the linker's
output files more deterministic -- an important property for
regression tests.
The following scenario would result in a bogus residual being reported
if SCB Paging was enabled:
disconnect with more data to transfer
disconnected SCB gets paged out
target reconnects so we page SCB back in
target completes transfer so residual is 0
target disconnects
SCB gets reused but not paged out since the residual is 0 (optimization)
target reconnects so we page the SCB back in
we report a residual because of stale residual information.
The fix for this is to set a flag that forces the SCB to be paged back
up to the host if we page in an SCB with a residual
Pointed out by: Doug Ledford <dledford@dialnet.net>
Replace vfork() by fork(), vfork() usage is totally bogus in this context.
This program don't bother to do even minimal vfork() support as per vfork(2)
manpage required.
Don't clobber user space argv0 memory on shell exec, mainly for vfork()
Fix another bug: if argv[0] is NULL, garbadge args might be added for
shell script
Submitted by: Tor Egge <Tor.Egge@idi.ntnu.no> (with yet one fault detect from me)
Bruce Evans [Wed, 23 Apr 1997 19:26:04 +0000 (19:26 +0000)]
Fixed longstanding profiling bug. The frame pointer wasn't set up
for syscalls, so one frame was lost in backtraces from syscalls.
This is handled better in the kernel by using a different mcount
entry point for profiling before the frame pointer is set up.
Mike Smith [Wed, 23 Apr 1997 11:03:10 +0000 (11:03 +0000)]
Don't call getnetbyname() on a netmask. On a system with a slow net
connection, a large set of network exports could take many minutes to
time out, giving the appearance of a total hang during boot.
Bruce Evans [Wed, 23 Apr 1997 10:49:54 +0000 (10:49 +0000)]
Generate .S files for syscalls. This has many advantages:
- dependencies actually work (I need this to propagate some fixes
in <machine/asm.h>)
- the cpp pipeline goes away, so errors can't leak out of it and
an ANSI cpp is automatically used.
- it's simpler - standard rules get used instead of repetitive
special rules. (This showed bugs in the strip steps in the
standard rules. The wrong strip flag was also used for *.po
here.)
Removed some ${ECHO}s and `@'s. Normal make echoing of what is
being done is now not much more verbose than the echo messages
were, and is more useful.
David Greenman [Wed, 23 Apr 1997 01:44:30 +0000 (01:44 +0000)]
Check that the received packet length indicated by the card is at least
large enough to contain the ethernet header. There appears to be a
condition where the card can return "0" in some failure cases, and this
causes bad things to happen (a panic).
Bruce Evans [Tue, 22 Apr 1997 17:44:34 +0000 (17:44 +0000)]
Removed wrong declarations of malloc() and realloc(). They were unused,
and they broke when yacc started generating `#include <stdlib.h>', but
the breakage was hidden by compatibility cruft in gcc unless DESTDIR
was unusual.
John Polstra [Tue, 22 Apr 1997 06:55:47 +0000 (06:55 +0000)]
Make the necessary changes so that an ELF kernel can be built. I
have successfully built, booted, and run a number of different ELF
kernel configurations, including GENERIC. LINT also builds and
links cleanly, though I have not tried to boot it.
The impact on developers is virtually nil, except for two things.
All linker sets that might possibly be present in the kernel must be
listed in "sys/i386/i386/setdefs.h". And all C symbols that are
also referenced from assembly language code must be listed in
"sys/i386/include/asnames.h". It so happens that failure to do
these things will have no impact on the a.out kernel. But it will
break the build of the ELF kernel.
The ELF bootloader works, but it is not ready to commit quite yet.
In these XXX MHz days, waiting 500ms for a process to do something is
really far too long. Let us try 100ms instead, if you have a PP200,
maybe that's even too long. This should speed up make -j# builds.
I wonder why SIGCHLD isn't used...
Dirty change in union_lock(). Sometimes upper vnode is locked without
UN_ULOCK flag. This shows a locking violation but I couldn't find the
reason UN_ULOCK is not set or upper vnode is not unlocked. I added
the code that detect this case and adjust un_flags. DIAGNOSTIC kernel
doesn't adjust un_flags, but just panic here to help debug by kernel
hackers.
Nate Williams [Mon, 21 Apr 1997 13:38:32 +0000 (13:38 +0000)]
- Better fix for 3C589D support. Revert previous changes and add a
delay after we reset the card to allow the card to come back to life.
It appears the newer card takes longer to reset.
Submitted by: Samuel Lam <skl@ScalableNetwork.com>
Bruce Evans [Sun, 20 Apr 1997 18:02:40 +0000 (18:02 +0000)]
Fixed the type of a timeout function and removed casts that hid the
type mismatches. There was no problem in practice (at least on 386's).
The timeout args still get bogusly cast from int to `void *' via
caddr_t and back to int.
Bruce Evans [Sun, 20 Apr 1997 17:26:55 +0000 (17:26 +0000)]
Fixed the type of timeout functions and removed casts that hid the
type mismatches. mcd and scd were/are particularly bogus. They
used a general purpose function taking 2 args for the timeout
function and fudged varargs stuff to supply the second arg for the
timeout case. This broke `cc -mrtd'. Bounce through a timeout
function instead. The timeout arg still gets bogusly cast from
int to `void *' and back.
John Dyson [Sun, 20 Apr 1997 17:12:11 +0000 (17:12 +0000)]
Fix both a problem with accessing backing objects, and also release
the process map on nonexistant pages.
PR: kern/3327
Submitted by: Tor Egge <Tor.Egge@idi.ntnu.no>
John Dyson [Sun, 20 Apr 1997 16:57:12 +0000 (16:57 +0000)]
Re-institute the efficent version of vfork. It appears to make a
difference of approx 3mins in make world on my P6!!! This means
that vfork now has full address space sharing, so beware with
sloppy vfork programming. Also, you really do need to apply
the previously committed popen fix in libc.