Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2019-03-12 19:09:42 +0300
committerCorinna Vinschen <corinna@vinschen.de>2019-03-12 19:09:42 +0300
commitde7f13aa9acec022ad1e4b3f929d4dc982ddf60b (patch)
treeff753991e9c772db89e5124d1ef0e6e3b69eb4a0
parent673a3daa84c33bf95833237e35791c773b25bcd5 (diff)
Cygwin: loadavg: improve debugging of load_init
When logging in via ssh with an unprivileged account, PdhAddEnglishCounter returns with status 0x800007D0, PDH_CSTATUS_NO_MACHINE. We didn't find any workaround but the changes to improve debugging output may help in future. Using UNICODE instead of ANSI functions is a result of trying to fix this problem. Also drop the prototype workaround for PdhAddEnglishCounterA. It's not required anymore since Mingw-w64's pdh.h catched up. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
-rw-r--r--winsup/cygwin/autoload.cc4
-rw-r--r--winsup/cygwin/loadavg.cc40
2 files changed, 27 insertions, 17 deletions
diff --git a/winsup/cygwin/autoload.cc b/winsup/cygwin/autoload.cc
index 056fac7dc..c4d91611e 100644
--- a/winsup/cygwin/autoload.cc
+++ b/winsup/cygwin/autoload.cc
@@ -755,8 +755,8 @@ LoadDLLfunc (WSASocketW, 24, ws2_32)
// LoadDLLfunc (WSAStartup, 8, ws2_32)
LoadDLLfunc (WSAWaitForMultipleEvents, 20, ws2_32)
-LoadDLLfunc (PdhAddEnglishCounterA, 16, pdh)
+LoadDLLfunc (PdhAddEnglishCounterW, 16, pdh)
LoadDLLfunc (PdhCollectQueryData, 4, pdh)
LoadDLLfunc (PdhGetFormattedCounterValue, 16, pdh)
-LoadDLLfunc (PdhOpenQueryA, 12, pdh)
+LoadDLLfunc (PdhOpenQueryW, 12, pdh)
}
diff --git a/winsup/cygwin/loadavg.cc b/winsup/cygwin/loadavg.cc
index bef80e13a..127591a2e 100644
--- a/winsup/cygwin/loadavg.cc
+++ b/winsup/cygwin/loadavg.cc
@@ -39,14 +39,7 @@
#include <math.h>
#include <time.h>
#include <sys/strace.h>
-
-/* Prototype for PdhAddEnglishCounterA in pdh.h under _WIN32_WINNT >= 0x0600 is
- missing WINAPI */
-#undef _WIN32_WINNT
#include <pdh.h>
-extern "C"
-PDH_FUNCTION PdhAddEnglishCounterA(PDH_HQUERY hQuery, LPCSTR szFullCounterPath,
- DWORD_PTR dwUserData, PDH_HCOUNTER *phCounter);
static PDH_HQUERY query;
static PDH_HCOUNTER counter1;
@@ -61,14 +54,31 @@ static bool load_init (void)
if (!tried) {
tried = true;
- if (!((PdhOpenQueryA (NULL, 0, &query) == ERROR_SUCCESS) &&
- (PdhAddEnglishCounterA (query, "\\Processor(_Total)\\% Processor Time",
- 0, &counter1) == ERROR_SUCCESS) &&
- (PdhAddEnglishCounterA (query, "\\System\\Processor Queue Length",
- 0, &counter2) == ERROR_SUCCESS))) {
- debug_printf("loadavg PDH initialization failed\n");
- return false;
- }
+ PDH_STATUS status;
+
+ status = PdhOpenQueryW (NULL, 0, &query);
+ if (status != STATUS_SUCCESS)
+ {
+ debug_printf ("PdhOpenQueryW, status %y", status);
+ return false;
+ }
+ status = PdhAddEnglishCounterW (query,
+ L"\\Processor(_Total)\\% Processor Time",
+ 0, &counter1);
+ if (status != STATUS_SUCCESS)
+ {
+ debug_printf ("PdhAddEnglishCounterW(time), status %y", status);
+ return false;
+ }
+ status = PdhAddEnglishCounterW (query,
+ L"\\System\\Processor Queue Length",
+ 0, &counter2);
+
+ if (status != STATUS_SUCCESS)
+ {
+ debug_printf ("PdhAddEnglishCounterW(queue length), status %y", status);
+ return false;
+ }
mutex = CreateMutex(&sec_all_nih, FALSE, "cyg.loadavg.mutex");
if (!mutex) {