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

Reply via email to