Reply for (scatter/gather transfer)

Subra Maniam subra at gssc.UUCP
Sat Jun 24 06:35:43 AEST 1989


Subject: Reply for (V68 - what does disjointio do?)

Hi,

<<  modifying a tape driver for V68 (Motorola's SysV.3 for 680x0's).

<< .  I assume that it will pull in any pages that aren't in real
<< memory off of disk but does it lock them?  If it does how do they get
<< unlocked?  You see I can't find any place where the memory pages are
<< getting locked or unlocked.
<< If disjointio doesn't do the locking who does?  I have some ATT docs
<< ....
<< transfers and if my guess is correct using dma_breakup will give me a
<< very large penalty. 

   I am a new subscriber and so I saw this item only recently. As I am
not sure if somebody has answered, I am posting this suggestion.
   physio() loads in memory all the pages and it also locks them. So
from the raw I/O read and write routines, you can call physio() passing
it a pointer to a function sgr(). So when control comes to sgr(), the
pages would have been locked into memory. Now, your driver function sgr()
can find out the equivalent physical addresses for each page by directly
walking thru the page table ( or possibly by disjointio() - but
I am not aware of this fn.). After the transfer is over, when sgr() returns
physio will automatically unlock the pages. I have tried this approach 
with system V.3 and it has worked. I hope that this suggestion is useful.



More information about the Comp.unix.wizards mailing list