I think perhaps we're talking at cross purposes here, but this is a subject
that has caused me a massive amount of grief so I'm a no compromise mood.

Here it is: I have no problem with releasing a slave block WHEN I AM DONE
WITH IT!  The Operating System is there to serve me. Not the other way
around.  I am perfectly happy to defer releasing blocks for just a few
scheduler loop cycles to allow my driuver to finish what it's doing. My
issue is the badly written QDOS operating system that forces a decision on
the time of disposal and does not even handle an error return.
Unforgiveable.

That's sloppy, lazy programming.  QDOS OR Minerva OR SMSQ!!!


-----Original Message-----
From: ql-users-boun...@lists.q-v-d.com
[mailto:ql-users-boun...@lists.q-v-d.com] On Behalf Of Laurence Reeves
Sent: 20 April 2011 16:54
To: ql-us...@q-v-d.com
Subject: Re: [Ql-Users] Announcement about the future of Ser-USB

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

_______________________________________________
QL-Users Mailing List
http://www.q-v-d.demon.co.uk/smsqe.htm

Reply via email to