Adrian Ives wrote:
- As a further bonus, if QDOS has decided that you WILL flush a large number
of slave blocks, the driver will exhaust all of the available memory trying
to double buffer the requests.
How can the driver "exhaust all of the available memory". when it is not
permitted to allocate memory while flushing slave blocks?
...
My other comment, "The driver doesn't even get told about that." was
about the fact that the driver does not get called for slave blocks
whose data is "accessible". They are silently returned to the pool.
* Workhorse for releasing slave blocks, most of this was in io_slave
reglist reg d0-d1/d3/a0-a4
sb_slave
movem.l reglist,-(sp)
move.w #sv_fsdef<<2&(-256)!$f0,d1 mask for drive id and part
offset
assert 0,bt_stat
and.b (a1),d1 pick out drive bits from status
asr.w #2,d1 shift id to make pointer to table
move.l sv_fsdef&63(a6,d1.w),a2 get physical definition block
move.l fs_drivr(a2),a4 driver linkage address
lea -sv_lio(a4),a3 base of driver definition block
move.l ch_slave(a4),a4 get entry point of slave
jsr (a4)
movem.l (sp)+,reglist
sb_allop
moveq #bt.actn,d2 set up action (read or write) mask
and.b (a1),d2 is action pending
bne.s sb_slave yes - go ensure slaving
sf (a1) take this block
ea_top
add.l d3,a1 move pointer to next one
ea_bot
subq.l #bt_end,d0
bge.s sb_allop any more blocks?
bra.s ok_rts
--
Lau AS! d-(!) a++ c++++ p++ t+ f-- e++ h+ r--(+) n++(*) i++ P- m++
ASC Decoder at<http://www32.brinkster.com/ascdecode/>
_______________________________________________
QL-Users Mailing List
http://www.q-v-d.demon.co.uk/smsqe.htm