Hi!

28-Мар-2004 23:41 [EMAIL PROTECTED] (Bernd Blaauw) wrote to
[EMAIL PROTECTED]:

 >>      BTW, as I already reports, FreeDOS currently doesn't allows to set less
 >> than 20 buffers, unless you use negative value.
BB> what does negative value mean?

     As I understand, this was designed to place buffers into low memory.
Currently negative value used to get precise buffers value (1..99). Without
minus, buffers limited by 20..99 when no DOS=HMA used, else buffers fill
rest of HMA memory and user value (but not less than 20) used to mark point
from where will be allocated memory by INT 2F/4A02. If user value is bigger,
than buffers in HMA, then it ignored.

     My patch changes this: user value (but not less than 6) always used as
minimum value of buffers (even this moves allocation from HMA to low
memory), ie. there will not be allocated buffers less than requested value
(unless "99" limit). Minus before value guarantees that rest of HMA (over
user value) will not be filled by HMA, ie. with this will not be allocated
buffers over requested.

BB> load ALWAYS in conventional RAM, even though
BB> HMA and UMB present?
BB> DOS=LOW,UMB
BB> BUFFERSHIGH=-30
BB> what happens now?

     Currently, with DOS=LOW, buffers=-n equal to buffers=n.

BB> -or-
BB> DOS=HIGH,UMB
BB> BUFFERSHIGH=90 // only 40 fit, currently.
BB> what happens now? HMA remains unused and all buffers attempted to be stored
BB> in UMB?

     Value for buffers= is ignored and buffers always fills rest of HMA (on
my machine there is space only for 27 buffers, BTW). Only if this value less
than 27, then it used to mark start of "user area" for INT 2F/4A02.

BB> -or-
BB> DOS=HIGH,UMB
BB> BUFFERSHIGH=-30 // only 40 fit, currently.
BB> what happens now?

     If in HMA is space for 30 buffers, they placed in HMA (and rest of HMA,
if any, not used), else they allocated in low memory ("pbuffer =
KernelAlloc(bytes, 'B', 0)" in config_init_buffers(), where 0 mean "only low
memory").

BB> - means store in conventional ram, but a) HMA available.
BB> b) buffersHIGH

BB> officially 0<buffers<100.

     Currently FreeDOS set range to 20..99 for positive value (99 used in
config_init_buffers(), 20 set by NUMBUFF in Config.cfgBuffers and by
Config_Buffers()) and 6..99 for negative values.

 >>      On the other side, requested buffers value (say 80) is ignored, if it
 >> positive and there is DOS HMA. BTW, why to limit by 99 count of allocated
 >> buffers?
BB> BUFFERS=99 ->
BB> what if HMA can only store 90 buffers? downsize to 90? or store 99 in
BB> conventional RAM?

     Segment limit is 64k (0xFFF0), buffer size is 532 bytes, this gives
limit=123.

BB> or store 90 in HMA and 9 in conventional RAM (split)?
BB> FreeDOS kernelcode seems to have a "everything or nothing" style for these
BB> things.

     I think, in given case this is justified: too many buffers can't
replace even small disk cache program.




-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id70&alloc_id638&op=click
_______________________________________________
Freedos-kernel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/freedos-kernel

Reply via email to