BSD 4.2 minphys() < 64K

Chris Torek chris at mimsy.UUCP
Wed Dec 17 06:10:11 AEST 1986


In article <1871 at utah-gr.UUCP>thomas at utah-gr.UUCP (Spencer W. Thomas) writes:
>physio() is often used to write to Unibus devices.  These devices have a
>limit of 64k bytes transferred (due to a 16 bit count register).  It has
>nothing to do with host memory size.

This is true (although many Unibus devices use a word count, not
a byte count, so should be able to handle 128kb ... maybe).  That
does not explain why all the massbuss code uses the same routine.

All the pages involved in physical I/O must be locked into core
during the transfer.  The MBA byte count register is 32 bits wide,
so it should be able to handle up to 4Gb, but physio itself would
probably hang or crash in pagein() if you tried to transfer more
in one shot than you have in free pages.  Rather than compute this
at runtime, it seems easier to have all the MBA drivers use the
same minphys routine.  At 63k-at-a-time, I get a raw data rate of
1.1Mb/s on a Vax 785 with Eagles on an Emulex SC788 (I am told it
is a 788; they all look alike to me).  This amounts to less than
20 interrupts per second---quite trivial; the *clock* interrupts
100 times per second.  Even with an XMD controller, at 2.2Mb/s,
that would be only 35 interrupts per second.
-- 
In-Real-Life: Chris Torek, Univ of MD Comp Sci Dept (+1 301 454 7690)
UUCP:	seismo!mimsy!chris	ARPA/CSNet:	chris at mimsy.umd.edu



More information about the Comp.unix.wizards mailing list