Mail Archives: djgpp/1995/03/24/05:49:31
HANDLING CONVENTIONAL MEMORY (THE FIRST 640K)
int _go32_dpmi_allocate_dos_memory(_go32_dpmi_seginfo *INFO);
Allocates part of the conventional memory area.
int _go32_dpmi_resize_dos_memory(_go32_dpmi_seginfo *INFO);
Change the size of the allocated conventional memory.
int _go32_dpmi_free_dos_memory(_go32_dpmi_seginfo *INFO);
Frees memory allocated by `_go32_dpmi_allocate_real_mode_memory'.
INFO->size == how many paragraphs requested (= (size in bytes + 15)/16).
INFO->rm_segment := the segment of the allocated memory.
Re these dpmi functions:-
(1) "If there isn't enough memory in the system, INFO->size := the largest
available size, and an error is returned.": What is the most conventional
memory store that I am likely to be allowed? What is the most that I can ask
for without seriously impeding djgpp's and dpmi's working?
(2) If I use _go32_dpmi_resize_dos_memory to change my conventional memory
allocation from x bytes to y bytes, can I trust the bottom min(x,y) bytes of
my conventional memory allocation to keep the same values?
(3) What happens if I call _go32_dpmi_allocate_dos_memory twice without
calling _go32_dpmi_free_dos_memory between? Do I get two separate allocations?
- Raw text -