2003-09-04 Corinna Vinschen <corinna@vinschen.de>
+ * sysconf.cc (sysconf): Return more accurate value for _SC_AVPHYS_PAGES.
+
+2003-09-04 Corinna Vinschen <corinna@vinschen.de>
+
* mmap.cc: Restructure. Add, remove and rewrite comments throughout
for better readability. Change function names for better
understanding.
return 1;
/*FALLTHRU*/
case _SC_PHYS_PAGES:
- case _SC_AVPHYS_PAGES:
if (wincap.supports_smp ())
{
NTSTATUS ret;
}
case _SC_PHYS_PAGES:
return sbi.NumberOfPhysicalPages;
- case _SC_AVPHYS_PAGES:
- return sbi.HighestPhysicalPage - sbi.LowestPhysicalPage + 1;
}
}
break;
+ case _SC_AVPHYS_PAGES:
+ if (wincap.supports_smp ())
+ {
+ NTSTATUS ret;
+ SYSTEM_PERFORMANCE_INFORMATION spi;
+ if ((ret = NtQuerySystemInformation (SystemPerformanceInformation,
+ (PVOID) &spi,
+ sizeof spi, NULL))
+ != STATUS_SUCCESS)
+ {
+ __seterrno_from_win_error (RtlNtStatusToDosError (ret));
+ debug_printf ("NtQuerySystemInformation: ret = %d, "
+ "Dos(ret) = %d",
+ ret, RtlNtStatusToDosError (ret));
+ return -1;
+ }
+ return spi.AvailablePages;
+ }
}
/* Invalid input or unimplemented sysconf name */