Hi folks,I may have a handle on why you're seeing 0.00 load averages. Would you kindly compile the attached program, run it, and post its results along with which version of Windows you are running?
For example, gcc -Wall -ggdb -o test test.c -lpdh ./test Thanks for your help,
..mark
// test.c // See if PDH counters needed for Cygwin load averages are present // 2024/10/01 Mark Geisert <m...@maxrnd.com> // #include <stdio.h> #define _WIN32_WINNT 0x0600 #include <pdh.h> PDH_HQUERY query; PDH_HCOUNTER counter1; PDH_HCOUNTER counter2; PDH_HCOUNTER counter3; #define c1name L"\\Processor(_Total)\\% Processor Time" #define c2name L"\\Processor Information(_Total)\\% Processor Time" #define c3name L"\\System\\Processor Queue Length" char * pdh_status (PDH_STATUS err) { static FILE *f = NULL; static char buf[132]; static char hexcode[32]; char line[132]; char prefix[80]; char middle[80]; static char suffix[80]; snprintf (hexcode, sizeof hexcode, "0x%X", err); if (strstr (suffix, hexcode)) goto done; /* same as last time called */ if (f) (void) fseek (f, 0, SEEK_SET); else f = fopen ("/usr/include/w32api/pdhmsg.h", "r"); if (!f) goto bail; while (!feof (f)) { (void) fgets (line, (sizeof line) - 1, f); if (strncmp (line, "#define PDH_", 12)) continue; if (!strstr (line, hexcode)) continue; int num = sscanf (line, "%s %s %s", prefix, middle, suffix); if (num != 3) continue; snprintf (buf, sizeof buf, "returns %s", middle); goto done; } bail: snprintf (buf, sizeof buf, "returns %s", hexcode); done: return buf; } void load_init (void) { PDH_STATUS ret = PdhOpenQueryW (NULL, 0, &query); fprintf (stderr, "PdhOpenQueryW %s\n", pdh_status (ret)); ret = PdhAddEnglishCounterW (query, c1name, 0, &counter1); fprintf (stderr, "PdhAddEnglishCounterW#1 %s\n", pdh_status (ret)); ret = PdhAddEnglishCounterW (query, c2name, 0, &counter2); fprintf (stderr, "PdhAddEnglishCounterW#2 %s\n", pdh_status (ret)); ret = PdhAddEnglishCounterW (query, c3name, 0, &counter3); fprintf (stderr, "PdhAddEnglishCounterW#3 %s\n", pdh_status (ret)); } int main (int argc, char **argv) { load_init (); return 0; }
-- Problem reports: https://cygwin.com/problems.html FAQ: https://cygwin.com/faq/ Documentation: https://cygwin.com/docs.html Unsubscribe info: https://cygwin.com/ml/#unsubscribe-simple