diff options
author | Eamon Walsh <ewalsh@epoch.ncsc.mil> | 2004-05-04 19:44:10 +0000 |
---|---|---|
committer | Eamon Walsh <ewalsh@epoch.ncsc.mil> | 2004-05-04 19:44:10 +0000 |
commit | 1e14f97721a16586f3ba91c791a9c36dc0ab55b5 (patch) | |
tree | f78c6daa228ff0e627808705ab79c8d365a6a442 | |
parent | 744a33a52832da9dfaff2f00f2e5756ca9bd9034 (diff) |
Merge the new release from HEADXACE-SELINUX
-rw-r--r-- | get_load.c | 58 | ||||
-rw-r--r-- | get_rload.c | 2 |
2 files changed, 58 insertions, 2 deletions
@@ -1,4 +1,4 @@ -/* $XdotOrg: xc/programs/xload/get_load.c,v 1.1.4.4 2003/12/20 00:28:32 kaleb Exp $ */ +/* $XdotOrg: xc/programs/xload/get_load.c,v 1.2 2004/04/23 19:54:57 eich Exp $ */ /* $XConsortium: get_load.c /main/37 1996/03/09 09:38:04 kaleb $ */ /* $XFree86: xc/programs/xload/get_load.c,v 1.21tsi Exp $ */ /* @@ -47,6 +47,61 @@ from the X Consortium. #include <stdlib.h> #include "xload.h" +#if defined(__CYGWIN__) +#include <windows.h> +typedef struct { + DWORD stat; + union { + LONG vLong; + double vDouble; + LONGLONG vLongLong; + void *string; + } u; +} COUNTER; +static HANDLE query; +static HANDLE counter; +static HINSTANCE hdll; +static long (__stdcall *pdhopen)(LPCSTR, DWORD, HANDLE); +static long (__stdcall *pdhaddcounter)(HANDLE, LPCSTR, DWORD, HANDLE*); +static long (__stdcall *pdhcollectquerydata)(HANDLE); +static long (__stdcall *pdhgetformattedcountervalue)(HANDLE, DWORD, LPDWORD, COUNTER*); +#define CYGWIN_PERF +void InitLoadPoint() +{ + long ret; + hdll=LoadLibrary("pdh.dll"); + if (!hdll) exit(-1); + pdhopen=(void*)GetProcAddress(hdll, "PdhOpenQueryA"); + if (!pdhopen) exit(-1); + pdhaddcounter=(void*)GetProcAddress(hdll, "PdhAddCounterA"); + if (!pdhaddcounter) exit(-1); + pdhcollectquerydata=(void*)GetProcAddress(hdll, "PdhCollectQueryData"); + if (!pdhcollectquerydata) exit(-1); + pdhgetformattedcountervalue=(void*)GetProcAddress(hdll, "PdhGetFormattedCounterValue"); + if (!pdhgetformattedcountervalue) exit(-1); + ret = pdhopen( NULL , 0, &query ); + if (ret!=0) exit(-1); + ret = pdhaddcounter(query, "\\Processor(_Total)\\% Processor Time", 0, &counter); + if (ret!=0) exit(-1); +} +void GetLoadPoint( w, closure, call_data ) /* SYSV386 version */ + Widget w; /* unused */ + XtPointer closure; /* unused */ + XtPointer call_data; /* pointer to (double) return value */ +{ + double *loadavg = (double *)call_data; + COUNTER fmtvalue; + long ret; + *loadavg = 0.0; + ret = pdhcollectquerydata(query); + if (ret!=0) return; + ret = pdhgetformattedcountervalue(counter, 0x200, NULL, &fmtvalue); + if (ret!=0) return; + *loadavg = (fmtvalue.u.vDouble-0.01)/100.0; +} +#else + + #if !defined(DGUX) #if defined(att) || defined(QNX4) #define LOADSTUB @@ -1169,3 +1224,4 @@ getloadavg (double loadavg[], int nelem) #endif /* END OF DG/ux */ +#endif /* END of __CYGWIN__ */ diff --git a/get_rload.c b/get_rload.c index efee824..9629d01 100644 --- a/get_rload.c +++ b/get_rload.c @@ -10,7 +10,7 @@ /* Not all OS supports get_rload steal the STUB idea from get_load */ -#if defined(QNX4) +#if defined(QNX4) || defined(__CYGWIN__) #define RLOADSTUB #endif |