Mail Archives: djgpp/1998/06/18/02:44:19
On 17 Jun 1998, Bernhard Gleich wrote:
> This question should be in the FAQ, but I didn't find it.
The FAQ, by its very definition, is the list of FREQUENTLY-asked
questions. I don't invent the questions that go into it, I only
gather them from this forum. And the question you asked is not a
frequent one, so it's not there.
> I'm trying to do some PCI DMA transfer. For this I need to know where
> the physical address of my allocated memory is. But I could not find
> any function that returns me this value. Could anyone point me to this
> type of information?
You could do one of these:
- Use a buffer in low memory (below 1MB mark). This part of
memory is usually mapped 1:1, so the linear address is also the
physical address. You can allocate a buffer there using
__dpmi_allocate_dos_memory.
- Use the VDS (Virtual DMA Services) API, which is implemented as
a bunch of functions of Interrupt 4Bh. See Ralf Brown's
Interrupt List for details. This has a drawback that your
program won't work without a real memory manager, like EMM386,
QEMM or Windows, since CWSDPMI itself doesn't provide the VDS.
- Raw text -