moving i/o buffers back into kernel space
utzoo!decvax!ucbvax!dist2
utzoo!decvax!ucbvax!dist2
Sat Sep 26 04:45:59 AEST 1981
Various people have commented about the lost clock interrupts
resulting from the placement of i/o buffers outside the kernel
in 2bsd V7 (this happens because spl7's are done during the
re-mapping). There have also been musings about whether
something in this code was responsible for crashes. We decided
to put the buffers back in and see what happens. In addition to
undefining UCB_BUFOUT in localopts.h, we had to do the
following. Apparently, the kernel was never tested with the
buffers in.
Apparently so.
(1) You will also need to undefine UCB_CLIST. In addition,
there are separate assemler defines in conf/mch.s which will
need to be unset. These are BUFS and CLIST.
Specifically, the needed changes are:
diff mch.s mch.s.bufsin
20,21c20,21
< .BUFS = 1 / == UCB_BUFOUT
< .CLIST = 1 / == UCB_CLIST
---
> .BUFS = 0 / == UCB_BUFOUT
> .CLIST = 0 / == UCB_CLIST
(2) seg.h needs to have the defines for UBMAPON and SSR3 placed
outside the ifdef for UCB_BUFOUT (their definition is currently
contingent on UCB_BUFOUT being defined). There are portions of
of the code in sys/machdep.c which get compiled regardless of
whether UCB_BUFOUT is defined or not, and which depend on these
defines.
This has been fixed in the current release.
(3) sys/syslocal.c will need to include <buf.h> if UCB_BUFOUT
is NOT defined.
The changes which should be made are:
diff syslocal.c syslocal.c.old
14a15,17
> #ifndef UCB_BUFOUT
> #include <sys/buf.h>
> #endif
They have been made on tapes written after 9/26/81.
(4) there is a line in bkclose() in dev/bk.c which should be
compiled only if UCB_BUFOUT is defined. This line is
abrelse(tp->t_bufp)
If UCB_BUFOUT is not defined, then the following should be
compiled instead:
brelse(tp->t_bufp)
This has been fixed in the current release.
Carl
More information about the Comp.bugs.2bsd
mailing list