I586_OPTIMIZED_BCOPY is configured.
Similarly for bzero/I586_OPTIMIZED_BZERO.
Fake 586's had better have a hardware FPU with non-broken exception
handling (we mask exceptions, but broken exception handling may trap
on the instructions that do the masking). I guess this means that
the routines won't work on most 386's or FPUless 486's even when they
have a h/w FPU.
These are based on using the FPU to do 64-bit stores. They also
use i586-optimized instruction ordering, i586-optimized cache
management and a couple of other tricks. They should work on any
i*86 with a h/w FPU, but are slower on at least i386's and i486's.
They come close to saturating the memory bus on i586's. bzero()
can maintain a 3-3-3-3 burst cycle to 66 MHz non-EDO main memory
on a P133 (but is too slow to keep up with a 2-2-2-2 burst cycle
for EDO - someone with EDO should fix this). bcopy() is several
cycles short of keeping up with a 3-3-3-3 cycle for writing. For
a P133 writing to 66 MHz main memory, it just manages an N-3-3-3,
3-3-3-3 pair of burst cycles, where N is typically 6.
The new routines are not used by default. They are always configured
and can be enabled at runtime using a debugger or an lkm to change
their function pointer, or at compile time using new options (see
another log message).
Removed old, dead i586_bzero() and i686_bzero(). Read-before-write is
usually bad for i586's. It doubles the memory traffic unless the data
is already cached, and data is (or should be) very rarely cached for
large bzero()s (the system should prefer uncached pages for cleaning),
and the amount of data handled by small bzero()s is relatively small
in the kernel.
Improved comments about overlapping copies.
Removed unused #include.
- split the "starting network daemons" in half.
- The first half starts things necessary to get full name service up.
- The quota check etc moved from "before network" to after the name
services are running. quotacheck does a while(p=getpwent()) which
isn't real good without YP running...
- moved rwhod a little later to put it with the other network stuff.
- deferred inetd a tad so that it's after ldconfig and dev_mkdb,
otherwise you get logins before you're ready.
Unresolved: named is started before ypserv/ypbind still, but named does
a while(s = getservent()) and while (p=getprotoent()) to suck in the
entire database into memory. This means you cannot have a "+" in the
/etc/services or /etc/protocols files or you get a long hang at boot.
(implemented better, admittedly) with a new option, '-S'. If the
maintainers of traceroute (Van?) add a -S option, we will then be in
conflict.
Also added a too-brief description of the option in the man page. Someone
with a better command of English than I at the moment should probably look
over it and rephrase it.
Reviewed by: pst, jkh
testing I changed it to -c to check for missed files by looking at time
stamps in /usr/include/g++.
Submitted by: "Philippe Charnier" <charnier@xp11.frmug.org>
dead kernel debugging. The previous code was a "do nothing".
The most obvious side effect of this is that you can now do things like
this and reasonably expect them to work:
dmesg -M /var/crash/vmcore.3 -N /var/crash/kernel.3
ps -axl -M /var/crash/vmcore.3 -N /var/crash/kernel.3
A good deal of this was lifted from the gdb code to do this, as well as
from NetBSD's libkvm (which has completely different VM macros)
callers of it to take advantage of this. This reduces new connection
request overhead in the face of a large number of PCBs in the system.
Thanks to David Filo <filo@yahoo.com> for suggesting this and providing
a sample implementation (which wasn't used, but showed that it could be
done).
Reviewed by: wollman