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