julian [Sat, 29 Jun 2002 19:16:10 +0000 (19:16 +0000)]
Oops, that was a heck of a lot more debugging left onthan I intended..
turn it off!
I don't know if people think that these debugging macros are worth keeping
or not but I'll keep them for a short while, while the danger of
queue stuffups in the (rather complicated) run queue code exists.
brian [Sat, 29 Jun 2002 18:49:08 +0000 (18:49 +0000)]
When a netgraph message is read, look for another before returning.
This removes a bad latency problem during initial setup where we
end up waiting for too long before reading the connected message
and time the connection out.
Problem figured out by: Andre Albsmeier <andre@albsmeier.net>
julian [Sat, 29 Jun 2002 17:26:22 +0000 (17:26 +0000)]
Part 1 of KSE-III
The ability to schedule multiple threads per process
(one one cpu) by making ALL system calls optionally asynchronous.
to come: ia64 and power-pc patches, patches for gdb, test program (in tools)
Reviewed by: Almost everyone who counts
(at various times, peter, jhb, matt, alfred, mini, bernd,
and a cast of thousands)
NOTE: this is still Beta code, and contains lots of debugging stuff.
expect slight instability in signals..
benno [Sat, 29 Jun 2002 09:43:59 +0000 (09:43 +0000)]
- Initialise battable to cover I/O spaces.
- Statically size the bpvo entries to avoid conflicts between bpvo allocation
and the vm allocator.
- Shift pmap_init2 code into pmap_init.
- Add UMA_ZONE_VM flag to uma_zcreate.
Submitted by: Peter Grehan <peterg@ptree32.com.au>
benno [Sat, 29 Jun 2002 09:39:44 +0000 (09:39 +0000)]
To quote Peter:
The case in cpu_switch() where there isn't a higher priority thread
(choosethread() == curthread) uses r4 as the PCB context pointer. However, the
use of r4 after the label L2 is incorrect, since it was probably trashed by
the call to choosethread, and in any case was set up to curthread at the start
of the routine.
This condition will occur when an interrupt thread schedules a netisr, which
is a lower priority thread.
Another (probably unnecessary) difference is that I was paranoid about
register trashing, so I decided to save r2 and r13 as well.
Submitted by: Peter Grehan <peterg@ptree32.com.au>
benno [Sat, 29 Jun 2002 09:28:21 +0000 (09:28 +0000)]
Many fixes to low-level trap and interrupt handling:
- Tidy up clock code. Don't repeatedly call hardclock().
- Remove intrnames, decrnest and intrcnt from locore.s
- Coalesce all trap handling into a single stub that then calls a dispatch
function.
Submitted by: Peter Grehan <peterg@ptree32.com.au>
tjr [Sat, 29 Jun 2002 04:52:33 +0000 (04:52 +0000)]
Avoid truncating the pathname to UNIX Domain Sockets with snprintf(),
giving a more sensible warning when the (relatively meagre) sun_path
limit is exceeded.
obrien [Sat, 29 Jun 2002 04:42:03 +0000 (04:42 +0000)]
Do NOT enable ATA_STATIC_ID -- cmd646 controller will be !ata2!,
and you will not mount an ATA /:
mountroot> ufs:/ad0a
Mounting root from ufs:/ad0a
setrootbyname failed
ffs_mountroot: can't find rootvp
jhb [Fri, 28 Jun 2002 21:53:08 +0000 (21:53 +0000)]
In namei(), we use a NULL thread for uio_td when doing a VOP_READLINK().
nfs_readlink() calls nfs_bioread() which passes in uio_td as the thread
argument to nfs_getcacheblk(). In nfs_getcacheblk() we dereference the
thread pointer to get a process pointer to pass to nfs_sigintr(). This
obviously results in a panic. :)
Rather than change nfs_getcacheblk() to check if the thread pointer is
NULL when calling nfs_sigintr() like other callers do, change
nfs_sigintr() to take a thread as the last argument instead of a
process so none of the callers have to care if the thread is NULL or not.
jmallett [Fri, 28 Jun 2002 21:13:06 +0000 (21:13 +0000)]
Add a module for src/tools/regression (`regression').
Add a MAINTAINERS line for the regression module, specifically referring to
src/tools/regression/usr.bin, right now, but applicable to other things, to
make clear that I am willing to help write new tests. The framework is all
modularised now, so it is easy to write new tests, etc., and since I'd like
to see tests for more and more things as bugs get fixed, it seems to be the
right thing to do to stand up and offer to help people write tests.
iedowse [Fri, 28 Jun 2002 20:06:47 +0000 (20:06 +0000)]
In vn_mkdir(), use vrele() instead of vput() on the parent directory
vnode in the case that the target exists and is the same vnode as
the parent (i.e. "mkdir ."). The namei() call does not leave the
vnode locked in this case even though you might expect it to.
This bug was mostly harmless in practice because unlocking an already
unlocked vnode currently does not trigger any panics or warnings.
Which winds up deleting a different entry from the syncache. Handle
this by not utilizing the next entry in the timer chain until after
syncache_respond() completes. The case of A == B should not be possible.
ache [Fri, 28 Jun 2002 14:45:30 +0000 (14:45 +0000)]
Add additional field 'overwrite' to login_vars. It mainly needed to handle
"term" according to manpage, i.e. not overwrite it, if already present in
environment.