diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2003-09-04 10:57:58 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2003-09-04 10:57:58 +0000 |
commit | 39473bba440668848d133e3d3a6c05266e3bd2a3 (patch) | |
tree | a5855cdb1110d1da51c07586d600a5e186634020 | |
parent | 4544f7f6a2ae3211707994a425fb57dffb4f34fe (diff) | |
download | cygnal-39473bba440668848d133e3d3a6c05266e3bd2a3.tar.gz cygnal-39473bba440668848d133e3d3a6c05266e3bd2a3.tar.bz2 cygnal-39473bba440668848d133e3d3a6c05266e3bd2a3.zip |
* sysconf.cc (sysconf): Return more accurate value for _SC_AVPHYS_PAGES.
-rw-r--r-- | winsup/cygwin/ChangeLog | 4 | ||||
-rw-r--r-- | winsup/cygwin/sysconf.cc | 21 |
2 files changed, 22 insertions, 3 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 332701f4c..d2dd326b9 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,5 +1,9 @@ 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. diff --git a/winsup/cygwin/sysconf.cc b/winsup/cygwin/sysconf.cc index d94b60699..fa290b945 100644 --- a/winsup/cygwin/sysconf.cc +++ b/winsup/cygwin/sysconf.cc @@ -69,7 +69,6 @@ sysconf (int in) return 1; /*FALLTHRU*/ case _SC_PHYS_PAGES: - case _SC_AVPHYS_PAGES: if (wincap.supports_smp ()) { NTSTATUS ret; @@ -100,11 +99,27 @@ sysconf (int in) } 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 */ |