From: "Charles Sandmann" Newsgroups: comp.os.msdos.djgpp Subject: Re: Q : DPMI 1.0 Function 0x508 Date: Wed, 19 Apr 2000 22:46:52 Organization: Aspen Technology, Inc. Lines: 40 Message-ID: <38fe375c.sandmann@clio.rice.edu> References: NNTP-Posting-Host: dcloan.hou.aspentech.com X-Trace: selma.aspentech.com 956202848 20174 10.32.115.107 (20 Apr 2000 03:54:08 GMT) X-Complaints-To: postmaster AT aspentech DOT com NNTP-Posting-Date: 20 Apr 2000 03:54:08 GMT X-NewsEditor: ED-1.5.8 To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com > On Tue, 4 Apr 2000, batchex wrote: > > I read in the FAQ section 18.7 that it is possible to map a > > physical memory range to a program's address space. The > > restriction to this is the physical address and the address to > > be mapped to must be page aligned. For the DPMI 1.0 function 0x508 (as mentioned below), which CWSDPMI supports. > > a. How do we ensure the mapped to address is page aligned? Eli replied: > If you are talking about function 0508h (only supported by DPMI 1.0 > providers), then you need to allocate the memory via function 0504h, > which always returns page-aligned addresses. This is clearly > explained in the DPMI 1.0 spec. While the DPMI spec says this, both 386MAX and CWSDPMI will support a handle allocated with the DPMI 0.9 calls since they always return memory page aligned. This is how the page protection stuff works also, since it is also page aligned. > > c. If the physical address is a memory mapped i/o, do we need to > > lock the mapped address? > > The DPMI 1.0 spec seems to say that they are already paged in, so I > think you don't need to lock them. Correct - mapped memory is always locked. > > Almost forgot, the function I'm talking about is DPMI 1.0 > > function 0x508 or __djgpp_map_physical_memory(). > > And that's where you problem lies: most DPMI servers out ther don't > support DPMI 1.0 or functions 0508h. You might find one or two > servers which do, but they are not the widely-used ones. CWSDPMI and 386MAX do support this function on DPMI 0.9 handles, so for a DOS only environment it might be fun to play with, but won't be portable to Win type environments.