www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1998/06/18/02:44:19

Date: Thu, 18 Jun 1998 09:42:59 +0300 (IDT)
From: Eli Zaretskii <eliz AT is DOT elta DOT co DOT il>
To: Bernhard Gleich <bgleich AT blitz DOT chemie DOT uni-ulm DOT de>
cc: djgpp AT delorie DOT com
Subject: Re: physical memory location
In-Reply-To: <3587e7b1.0@news.uni-ulm.de>
Message-ID: <Pine.SUN.3.91.980618094230.23552B-100000@is>
MIME-Version: 1.0

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 -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019