[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: PCI IDE BusMastering programming from a DPMI16 application



John R Pierce wrote:
> 
> I don' thave the DPMI spec handy here, but basically, you need to take a
> user mode address (selector:offset), get the base 'linear' address of the
> selector using the Get Segment Base function, add in the offset to get
the
> 'Linear' address.  
>
Hello and thank you for the information.  I figured that i should be able
to
produce the physical address from selector:offset using WINAPI
GetSelectorBase().

> You then need to determine if the current implementation of
> DPMI is using 'paging', if this is the case, then the linear address must
be
> 'page locked', and each page translated via ??? (Oh shoot, I can't find
it in
> the DPMI 0.9 spec I'm looking at...)
> 
Hmmm, i don't believe the Borland's PowerPack DPMI16 (which is 0.9
compliant) uses
any memory paging of i386.  If it does then could you explain on the
consequence
of this on DMA transfer?  Are you refering to the paging of virtual memory
swapping?
It was my understanding that when using DPMI to do DOS extended progrmming,
you
have the total system memory span and no paging (like in Expanded Memory
paging) is
needed.  But i guess memory management is really dependent on the kind of
DPMI 
server you are using.

> If you are writing DOS DMA applications under windows, you should use the
VDS (Virtual
> DMA Services specification, obtainable from the microsoft knowlege base
as
> article PW0519.  This has a 'scatter lock' call which will do what
> you want, and is supported both under windows 3.1 and 95.
> 
> -jrp
> 
Yes, i have looked into VDS and looks pretty good, however my application
has to
run under a DOS OS preferrably under DPMI server.

Thank you again,

-gshin
ìÛ