[comp.os.minix] Larger buffer cache

mike@prg.ox.ac.uk (Mike Spivey) (03/13/91)

I'm working on (and now have working) a larger buffer cache for MINIX
on the PC.  The problem with the present arrangement is that the cache
has to be entirely inside the FS's address space, and that severely
limits its size.  So I use a large area outside the address space
that's allocated like the RAM disk.  Has anyone else tried this?

A few questions have come up that readers may be able to answer more
easily than me:

1.	Is DMA on the PC (and AT) limited to the first meg of memory?
	The comment on line 6059 (kernel/floppy.c) seems to indicate
	that the DMA address is only 20 bits.  I need to be able to
	set up DMA transfers into the cache, so that would mean it
	can't be put in extended memory.

2..	What is the reason for having both the macros proc_addr and
	cproc_addr on lines 2118-9 (kernel/proc.h)?  As far as I can
	tell, the assignment on line 7443 (kernel/main.c) establishes
	the invariant proc_addr(p) == cproc_addr(p).  But both are
	used in several places, even after the kernel is initialised.
	This interests me because I want to eliminate umap() and just
	have numap() -- but sometimes one macro and sometimes the
	other is used to derive the first argument of umap() in the
	existing code.

3.	What purpose is served by the "temporary kludge" on line 15210
	(fs/device.c)?  It has to do with non-blocking I/O, but as far
	as I can see, non-blocking I/O is not used or supported
	elsewhere.  Maybe it has something to do with the Amoeba
	networking? I don't have the disk space to unpack the sources.

Sorry to ask such a technical (and maybe pedantic) series of
questions.

-- Mike Spivey.