www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1995/03/24/05:49:31

From: "A.Appleyard" <A DOT APPLEYARD AT fs2 DOT mt DOT umist DOT ac DOT uk>
To: DJGPP AT SUN DOT SOE DOT CLARKSON DOT EDU
Date: Fri, 24 Mar 1995 08:37:51 GMT
Subject: conventional memory

  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 -


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