...
 
Commits (4)
/* $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.18 2002/09/18 17:11:57 tsi Exp $ */
/* $XFree86: xc/programs/xload/get_load.c,v 1.21tsi Exp $ */
/*
Copyright (c) 1989 X Consortium
......@@ -46,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
......@@ -54,7 +110,7 @@ from the X Consortium.
#ifndef macII
#ifndef apollo
#ifndef LOADSTUB
#if !defined(linux) && !defined(__UNIXOS2__) && !defined(__GNU__)
#if !defined(linux) && !defined(__UNIXOS2__) && !defined(__GLIBC__)
#include <nlist.h>
#endif /* !linux && ... */
#endif /* LOADSTUB */
......@@ -154,11 +210,7 @@ struct lavnum {
extern long lseek();
#endif
static void xload_error(
#if NeedFunctionPrototypes
char *, char *
#endif
);
void xload_error(char *, char *);
#ifdef apollo
......@@ -272,7 +324,7 @@ void InitLoadPoint() /* SYSV386 version */
xload_error("cannot allocat space for", PROC_NAME);
first_buf = (XtPointer) namelist[2].n_value;
last_buf = first_buf + v.v_buf * sizeof(struct buf);
last_buf = (char *)first_buf + v.v_buf * sizeof(struct buf);
}
/* ARGSUSED */
......@@ -298,7 +350,7 @@ XtPointer call_data; /* pointer to (double) return value */
(p[i].p_stat == SIDL) ||
(p[i].p_stat == SXBRK) ||
(p[i].p_stat == SSLEEP && (p[i].p_pri < PZERO) &&
(p[i].p_wchan >= first_buf) && (p[i].p_wchan < last_buf)))
(p[i].p_wchan >= (char *)first_buf) && (p[i].p_wchan < (char *)last_buf)))
nproc++;
/* update the load average using a decay filter */
......@@ -863,7 +915,7 @@ void InitLoadPoint()
}
#else /* sun svr4 5.5 or later */
#if (!defined(SVR4)) && !defined(sgi) && !defined(MOTOROLA) && !(BSD >= 199103)
#if !defined(SVR4) && !defined(sgi) && !defined(MOTOROLA) && !defined(AIXV5) && !(BSD >= 199103)
extern void nlist();
#endif
......@@ -1073,7 +1125,7 @@ void GetLoadPoint( w, closure, call_data )
#endif /* KVM_ROUTINES else */
#endif /* SYSV && i386 else */
static void xload_error(str1, str2)
void xload_error(str1, str2)
char *str1, *str2;
{
(void) fprintf(stderr,"xload: %s %s\n", str1, str2);
......@@ -1172,3 +1224,4 @@ getloadavg (double loadavg[], int nelem)
#endif /* END OF DG/ux */
#endif /* END of __CYGWIN__ */
/* $XFree86: xc/programs/xload/get_rload.c,v 1.5 2002/01/07 21:46:49 dawes Exp $ */
/* $XFree86: xc/programs/xload/get_rload.c,v 1.4 2002/01/07 20:38:31 dawes Exp $ */
#include <stdio.h>
#include <X11/Intrinsic.h>
......@@ -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
......
/* $XConsortium: xload.c,v 1.37 94/04/17 20:43:44 converse Exp $ */
/* $XFree86: xc/programs/xload/xload.c,v 1.7 2002/09/18 17:11:57 tsi Exp $ */
/* $XFree86: xc/programs/xload/xload.c,v 1.6tsi Exp $ */
/*
Copyright (c) 1989 X Consortium
......
/* $XFree86: xc/programs/xload/xload.h,v 1.2 2001/08/28 17:10:39 tsi Exp $ */
/* $XFree86: xc/programs/xload/xload.h,v 1.1 2001/08/27 23:35:14 dawes Exp $ */
#ifndef _XLOAD_H_
#define _XLOAD_H_
......
.\" $XConsortium: xload.man,v 1.29 94/04/17 20:43:44 matt Exp $
.\"
.\" $XFree86: xc/programs/xload/xload.man,v 1.5 2002/10/12 16:06:48 herrb Exp $
.\" $XFree86: xc/programs/xload/xload.man,v 1.4 2001/08/13 19:35:01 dawes Exp $
.\"
.TH XLOAD 1 __xorgversion__
.SH NAME
......