예제 #1
0
파일: vm-limit.c 프로젝트: B-Rich/emacs
void
get_lim_data ()
{
  _go32_dpmi_meminfo info;
  unsigned long lim1, lim2;

  _go32_dpmi_get_free_memory_information (&info);
  /* DPMI server of Windows NT and its descendants reports in
     info.available_memory a much lower amount that is really
     available, which causes bogus "past 95% of memory limit"
     warnings.  Try to overcome that via circumstantial evidence.  */
  lim1 = info.available_memory;
  lim2 = info.available_physical_pages;
  /* DPMI Spec: "Fields that are unavailable will hold -1."  */
  if ((long)lim1 == -1L)
    lim1 = 0;
  if ((long)lim2 == -1L)
    lim2 = 0;
  else
    lim2 *= 4096;
  /* Surely, the available memory is at least what we have physically
     available, right?  */
  if (lim1 >= lim2)
    lim_data = lim1;
  else
    lim_data = lim2;
  /* Don't believe they will give us more that 0.5 GB.   */
  if (lim_data > 512U * 1024U * 1024U)
    lim_data = 512U * 1024U * 1024U;
}
예제 #2
0
파일: dpmi.c 프로젝트: hallco978/msys
u_long _go32_dpmi_remaining_physical_memory()
{
  _go32_dpmi_meminfo info;
  _go32_dpmi_get_free_memory_information(&info);
  if (info.available_physical_pages)
    return info.available_physical_pages * 4096;
  return info.available_memory;
}
예제 #3
0
파일: sys_dos.c 프로젝트: basecq/q2dos
static int Sys_Get_Physical_Memory(void) /* FS: From DJGPP tutorial */
{
	_go32_dpmi_meminfo meminfo;

	_go32_dpmi_get_free_memory_information(&meminfo);
	if (meminfo.available_physical_pages != -1)
		return meminfo.available_physical_pages * 4096;

	return meminfo.available_memory;
}
예제 #4
0
파일: dpmi.c 프로젝트: hallco978/msys
u_long _go32_dpmi_remaining_virtual_memory()
{
  _go32_dpmi_meminfo info;
  _go32_dpmi_get_free_memory_information(&info);
  return info.available_memory;
}