jkoshy [Mon, 18 Jan 1999 06:58:25 +0000 (06:58 +0000)]
Move to a uniform '\ooo' (VIS_OCTAL) encoding for special characters.
The previous commit broke mtree(8) when file names using certain 8-bit
characters ended up being encoded with '/', '*', and other shell
metacharacters.
fenner [Mon, 18 Jan 1999 02:09:15 +0000 (02:09 +0000)]
Don't use ip_mrtproto to determine whether multicast routing is in
the kernel; this was left over from the earlier protocol-dependent
kernel multicast routing code.
Learn how to handle the malloc'd multicast routing table (instead of
expecting it to be in mbufs)
fenner [Mon, 18 Jan 1999 01:54:36 +0000 (01:54 +0000)]
If arpresolve() gets passed a route with a null llinfo, call
arplookup() to try again. This gets rid of at least one user's
"arpresolve: can't allocate llinfo" errors, and arplookup() gives
better error messages to help track down the problem if there really
is a problem with the routing table.
peter [Sun, 17 Jan 1999 21:17:27 +0000 (21:17 +0000)]
Use the gensetdefs that is now in /usr/bin, it's a superset of the
one in the kernel source, and that one is already used for modules.
I don't _think_ this will hurt releases, aout-to-elf, etc, but it is
possible. In all the cases I've looked at, config(8) has been
generated straight after a make world, so if /usr/sbin/config exists and
is the right version for the kernel, then we can pretty much count on
/usr/bin/gensetdefs being there too.
peter [Sun, 17 Jan 1999 20:53:48 +0000 (20:53 +0000)]
Undo #undef KERNEL hack for vnode.h to avoid vnode_if.h.
XXX It probably makes sense to have a flag for bsd.kern.mk to avoid these
rules.
XXX IO_NDELAY seems to be the main reason for it, when used in a cdevsw
read or write "flag" context. Perhaps a redundant declaration
somewhere like sys/conf.h might help remove the need for vnode.h in
these device drivers in the first place.
peter [Sun, 17 Jan 1999 20:30:13 +0000 (20:30 +0000)]
Remove the LKM glue since the support (src/lkm) has been gone a while.
This was impossible to use as an LKM anyway, but does work as a preloaded
kld module though.
peter [Sun, 17 Jan 1999 19:56:02 +0000 (19:56 +0000)]
"fix" long standing aicasm build glitch. The problem was the
reorganization in rev 1.16 of i386/include/types.h which changed
stdlib.h's use of <machine/types.h>. The problem was the -I. was causing
machine/types.h to come from the current kernel source, while stdlib.h was
coming from /usr/include. /usr/include/stdlib.h is as old as the last
'make world', the machine/types.h was as new as the current source.
peter [Sun, 17 Jan 1999 19:05:40 +0000 (19:05 +0000)]
World, please meet the kld module called "lkm". If you have an a.out
kernel and you forgot to add 'options LKM', you can kldload this module
and get LKM compatability. (!)
peter [Sun, 17 Jan 1999 19:00:58 +0000 (19:00 +0000)]
- Move lkmnosys() to kern_syscall.c
- Have the VFS lkm support use vfs_register() etc rather than having it's
own version.
- Have the syscall lkm support use syscall_register() etc rather than
having it's own verison.
- Convert the lkm driver to a module.
peter [Sun, 17 Jan 1999 17:58:52 +0000 (17:58 +0000)]
Try and clean up the multiple formal loading support a bit, based on
suggestions from Greg Lehey some time ago. In the face of multiple
potential file formats, try and give a more sensible error than just
ENOEXEC.
XXX a good case can be made that the loading process is wrong - the linker
should locate the file first (using the search paths etc), then run the
loaders to see if they recognize it. While the present system allows for
the possibility of different search paths for different formats, we do not
use it and it just makes things more complicated than they need to be.
yokota [Sun, 17 Jan 1999 14:23:15 +0000 (14:23 +0000)]
- Examine the error code from the screen saver and act accordingly.
0 success
EAGAIN try again later
other don't call this screen saver again
- Test flags consistently to examine the status of the screen saver.
scrn_blanked: the screen saver is running
scp->status & SAVER_RUNNING: the saver is running in this vty
- Correctlyu preserve status flag bits in set/restore_scrn_saver_mdoe().
bde [Sun, 17 Jan 1999 05:46:25 +0000 (05:46 +0000)]
Pass the unit number to the DMA cookie lookup routine and use it
to look up cookies properly, at least for standard controllers.
Cookies are used so that we don't have to pass around lots of args.
All of the dmainit functions use the unit number so it is essential
that we pass them a cookie with the correct unit number.
This may break working configurations if there are bugs in the
dmainit functions like the ones I just fixed for VIA chipsets.
Broken in: rev 1.4 of ide_pci.c and rev.1.139 of wd.c.
bde [Sun, 17 Jan 1999 05:18:54 +0000 (05:18 +0000)]
Fixed a 2-bit error in initializing MWDMA mode for VIA chipsets.
Prefetch/postwrite was enabled for the wrong controller. (VIA
is bitwise big endian and we confused ourself by shifting left
instead of right.)
Extracted from: last set of patches from the author
(john hood <cgull@smoke.marlboro.vt.us>) on 7 Feb 1998
grog [Sun, 17 Jan 1999 03:32:07 +0000 (03:32 +0000)]
Add hooks for starting vinum at boot time. Set the variable
vinum_slices to the names of all slices (block device) which are under
the control of vinum. The configuration will be read in from each in
turn, starting with the most recently updated.
billf [Sun, 17 Jan 1999 01:22:55 +0000 (01:22 +0000)]
Add a new option for pkg_add, -r.
The remote option allows for automatic package fetching and installation
using the package repository found on wcarchive. Naturally, this site
can be overridden with a enviornment variable.
This code uses getobjformat() and getosreldate(). This means when some event
causes the package to be fetched to change (such as e-day) the logic also
needs to be changed.
bde [Sat, 16 Jan 1999 19:48:01 +0000 (19:48 +0000)]
Fixed a 1-bit error in initializing UDMA mode for VIA chipsets.
Instead of initializing UDMA mode, we turned it off and made sure that
it stays off by turning on the "UDMA enable by SET FEATURES" disable.
The damage was limited by bugs in cookie lookup, and suitable
initialization by some BIOSes. The cookie list has slaves before
masters, and the unit number is ignored when cookies are looked up,
so cookie lookup always finds cookies for slaves and the bug only
clobbers slaves, so the bug was harmless for common configurations
with no slaves or only non-UDMA slaves. UDMA initialization for
masters actually worked if the BIOS turns on the UDMA mode bit and
turns off the "UDMA enable by SET FEATURES" disable.
mjacob [Sat, 16 Jan 1999 19:20:30 +0000 (19:20 +0000)]
Sascha Blank <blank@uni-trier.de> convinced me I was an
idiot about testing SA_QUIRK_2FM in samount. Fixed.
Removed the NORRLS quirk (to save quirk space) and left
the behaviour of being quiet about failed reserve/release
(failed due Illegal Request) the same.
Added a SF_QUIET_IR for prevent/allow for the same purposes.
dfr [Sat, 16 Jan 1999 17:44:09 +0000 (17:44 +0000)]
A few small improvements to the bus code:
* A function device_printf() to make pretty-printing driver messages easier.
* A function device_get_children() to query the children of a device.
* Generic implementations of BUS_ALLOC_RESOURCE and BUS_RELEASE_RESOURCE.
* Change bus_generic_print_child() so that it is actually useful.
wpaul [Sat, 16 Jan 1999 06:25:59 +0000 (06:25 +0000)]
Stability fixes:
- In wb_rxeof(), if the received packet is less than MINCLSIZE bytes,
copy it to an mbuf chain so as to be more frugal in our use of mbuf
clusters.
- The Winbond chip, like the ASIX, wants the 'TX interrupt request'
bit set in the _first_ fragment of a transmitted frame, not the
last. (At least the Winbond manual states this unambiguously; too
bad I wasn't paying attention when I read it the first time.)
- Turn off the transmit threshold mechanism (initialize the threshold
to 0). This effectively puts the chip in 'store and forward' mode
which seems to cut down on transmit errors a little. It may also
reduce transmit performace a bit, but I'm willing to do that if it
means better reliability.
wpaul [Sat, 16 Jan 1999 06:19:38 +0000 (06:19 +0000)]
Fix some stability problems:
- Normally, the driver allocates an mbuf cluster for each receive
descriptor. This is because we have to be prepared to accomodate up to
1500 bytes (a cluster buffer can hold up to 2K). However, using up a
whole cluster buffer for a tiny packet is a bit of a waste. Also,
it seems to me that sometimes mbufs will linger in the kernel for
a while after being passed out of the driver, which means we might
drain the mbuf cluster pool. The cluster pool is smaller than the
mbuf pool in general, so we do the following: if the packet is less
that MINCLSIZE bytes, then we copy it into a small mbuf chain and
leave the mbuf cluster in place for another go-round. This saves
mbuf clusters in some cases while still allowing them to be used
for heavy traffic exchanges with lots of full-sized frames.
- The transmit descriptor has a bit in the control word which allows
the driver to request that a 'TX OK' interrupt be generated when
a frame has been completed. Sometimes, a frame can be fragmented
across several descriptors. The manual for the real DEC 21140A says
that if this happens, the 'TX interrupt request' bit is only valid
in the descriptor of the last fragment. With the ASIX chip, it seems
the 'TX interrupt request' bit is only valid in the descriptor of
the _first_ fragment. Actually, the manual contains conflicting
information, but I think it's supposed to be the first fragment.
To play it safe, set the bit in both the first and last fragment to
be sure that we get a TX OK interrupt. Without this fix, the driver
can sometimes be late in releasing mbufs from the transmit queue
after transmission.
mjacob [Sat, 16 Jan 1999 04:02:31 +0000 (04:02 +0000)]
More bandaids. One important one from Sascha Blank
(<blank@fox.uni-trier.de>) about quirks being set as
arithmetic values, not as bitfields. Add HP, Kennedy
and M4 1/2" reel quirk entries.
Do a lot of gratuitous source changing.
Audit all functions that build ccbs for the tape driver
and decide whether each one can be retried or not.
Still to do is some more state management post errors.
bde [Sat, 16 Jan 1999 01:06:23 +0000 (01:06 +0000)]
Don't let bugs in ide_pci.c break wdprobe(), at least for standard
IDE hardare. The attempted fix in rev.1.182 was a no-op except for
adding dozens of style bugs. The undocumented options ALI_V and
DISABLE_PCI_IDE go away as a side effect. ALI_V was a no-op because
rev.1.182 was a no-op. DISABLE_PCI_IDE didn't actually disable
PCI IDE. It disabled the buggy code in wdprobe() at a cost of
completely breaking support for Promise controllers.
msmith [Fri, 15 Jan 1999 17:25:02 +0000 (17:25 +0000)]
Add getenv_int(), specifically for retrieving integer values from kernel
environment variables. This makes it easy to pass tuning parameters
in from the bootloader.
wosch [Fri, 15 Jan 1999 17:21:39 +0000 (17:21 +0000)]
Misspelt Eighth Edition.
The Eighth Edition is *not* descended from the Seventh Edition.
Submitted by: Greg Lehey <grog@lemis.com>
and Dennis Ritchie
Here's a quote from Dennis Ritchie, posted to Warren Toomey:
[January 1999]
----- Forwarded message from dmr -----
I also got mail from Norman Wilson today about the discussion.
This is mainly to confirm and fill out details of Wilson's account.
The Eighth Edition system started with (I believe) BSD 4.1c and
the work was done on VAX 11/750s -- our group did not get
a 780 until a while later.
Most of the operating system superstructure of BSD was retained
(in particular no one (even the indefatigable Norman)
wanted to get much into the paging code. Norman is also
right that the competitor was John Reiser's (and Tom London's)
32V descendant from another group at the Labs. In structure
this system had a lot to offer (in particular the buffer cache and the page
pool were unified, but it was clear that their work was not being
supported by their own management. It was used for a while on
our first 750 and also our first 11/780 ("alice", a name that lives
in netnews fame preceding the reach of Dejanews).
The big change leading to V8 was the scooping-out and replacement of
the character-device and networking part by the streams mechanism. Later,
Peter Weinberger added the file-system switch that enabled
remote file systems and prescient things ideas like /proc). Weinberger,
as Norman said, also did a simple-minded FFS.
The TCP/IP stack wasn't very important to us then and it has a mixed and
murky history. Much of it came from early CSRG work, but it was converted
to a streams approach by Robert Morris and subsequently fiddled over a lot.
Likewise, as Norman said, the applications (/bin and whatnot) were somewhat
of a mixture. Many were the locally-done versions, some were taken
from BSD in some incarnation, some from System V.