use symbolic names for getloadavg() parameters, stricter error checks;

enable getloadavg() for Linux, a few little cleanups for Linux.
This commit is contained in:
marschap
2006-12-10 16:14:32 +00:00
parent f0bcfdb1c4
commit 14087edeb9
7 changed files with 47 additions and 25 deletions
+16
View File
@@ -4,6 +4,22 @@
#include "shared/LL.h"
#ifndef LOADAVG_NSTATS
# define LOADAVG_NSTATS 3
#endif
#ifndef LOADAVG_1MIN
# define LOADAVG_1MIN 0
#endif
#ifndef LOADAVG_5MIN
# define LOADAVG_5MIN 1
#endif
#ifndef LOADAVG_15MIN
# define LOADAVG_15MIN 2
#endif
typedef struct
{
+3 -3
View File
@@ -263,12 +263,12 @@ int machine_get_load(load_type *curr_load)
int machine_get_loadavg(double *load)
{
double loadavg[1];
double loadavg[LOADAVG_NSTATS];
if (getloadavg(loadavg, 1) == -1)
if (getloadavg(loadavg, LOADAVG_NSTATS) <= LOADAVG_1MIN)
return(FALSE);
*load = loadavg[0];
*load = loadavg[LOADAVG_1MIN];
return(TRUE);
}
+3 -3
View File
@@ -232,12 +232,12 @@ int machine_get_load(load_type *curr_load)
int machine_get_loadavg(double *load)
{
double loadavg[1];
double loadavg[LOADAVG_NSTATS];
if (getloadavg(loadavg, 1) == -1)
if (getloadavg(loadavg, LOADAVG_NSTATS) <= LOADAVG_1MIN)
return(FALSE);
*load = loadavg[0];
*load = loadavg[LOADAVG_1MIN];
return(TRUE);
}
+16 -10
View File
@@ -26,8 +26,14 @@
# endif
#endif
#ifdef HAVE_GETLOADAVG
# define USE_GETLOADAVG
#endif
#ifdef USE_GETLOADAVG
# include <sys/loadavg.h>
# ifdef HAVE_SYS_LOADAVG_H
# include <sys/loadavg.h>
# endif
#endif
#ifdef HAVE_PROCFS_H
@@ -147,11 +153,12 @@ reread (int f, char *errmsg)
exit(1);
}
int
long
getentry (const char *tag, const char *bufptr)
{
char *tail;
int retval, len = strlen (tag);
int len = strlen(tag);
long retval;
while (bufptr != NULL) {
if (*bufptr == '\n')
@@ -292,7 +299,7 @@ int machine_get_load(load_type *curr_load)
static load_type last_load = { 0, 0, 0, 0, 0 };
load_type load;
reread(load_fd, "get_load:");
reread(load_fd, "get_load");
sscanf(procbuf, "%*s %lu %lu %lu %lu\n", &load.user, &load.nice, &load.system, &load.idle);
load.total = load.user + load.nice + load.system + load.idle;
@@ -311,14 +318,13 @@ int machine_get_loadavg(double *load)
#ifdef USE_GETLOADAVG
double loadavg[LOADAVG_NSTATS];
if (getloadavg(loadavg, LOADAVG_NSTATS) < 0) {
if (getloadavg(loadavg, LOADAVG_NSTATS) <= LOADAVG_1MIN) {
perror("getloadavg"); /* ToDo: correct error reporting */
*load = 1.;
return(FALSE);
}
*load = loadavg[LOADAVG_1MIN];
#else
reread(loadavg_fd, "get_load:");
reread(loadavg_fd, "get_loadavg");
sscanf(procbuf, "%lf", load);
#endif
return(TRUE);
@@ -326,7 +332,7 @@ int machine_get_loadavg(double *load)
int machine_get_meminfo(meminfo_type *result)
{
reread(meminfo_fd, "get_meminfo:");
reread(meminfo_fd, "get_meminfo");
result[0].total = getentry("MemTotal:", procbuf);
result[0].free = getentry("MemFree:", procbuf);
result[0].shared = getentry("MemShared:", procbuf);
@@ -452,7 +458,7 @@ int machine_get_smpload(load_type *result, int *numcpus)
// Look for lines starting with "cpu0", "cpu1", etc.
token = strtok(procbuf, "\n");
while (token) {
while (token != NULL) {
if ((strlen(token) > 3) && (!strncmp(token, "cpu", 3)) && isdigit(token[3])) {
sscanf(token, "%*s %lu %lu %lu %lu", &curr_load[*numcpus].user, &curr_load[*numcpus].nice, &curr_load[*numcpus].system, &curr_load[*numcpus].idle);
@@ -479,7 +485,7 @@ int machine_get_uptime(double *up, double *idle)
{
double local_up, local_idle;
reread(uptime_fd, "get_uptime:");
reread(uptime_fd, "get_uptime");
sscanf(procbuf, "%lf %lf", &local_up, &local_idle);
if (up != NULL)
*up = local_up;
+3 -3
View File
@@ -229,12 +229,12 @@ int machine_get_load(load_type *curr_load)
int machine_get_loadavg(double *load)
{
double loadavg[1];
double loadavg[LOADAVG_NSTATS];
if (getloadavg(loadavg, 1) == -1)
if (getloadavg(loadavg, LOADAVG_NSTATS) <= LOADAVG_1MIN)
return(FALSE);
*load = loadavg[0];
*load = loadavg[LOADAVG_1MIN];
return(TRUE);
}
+3 -3
View File
@@ -234,12 +234,12 @@ int machine_get_load(load_type *curr_load)
int machine_get_loadavg(double *load)
{
double loadavg[1];
double loadavg[LOADAVG_NSTATS];
if (getloadavg(loadavg, 1) == -1)
if (getloadavg(loadavg, LOADAVG_NSTATS) <= LOADAVG_1MIN)
return(FALSE);
*load = loadavg[0];
*load = loadavg[LOADAVG_1MIN];
return(TRUE);
}
+3 -3
View File
@@ -193,12 +193,12 @@ int machine_get_load(load_type *curr_load)
int machine_get_loadavg(double *load)
{
double loadavg[1];
double loadavg[LOADAVG_NSTATS];
if (getloadavg(loadavg, 1) == -1)
if (getloadavg(loadavg, LOADAVG_NSTATS) <= LOADAVG_1MIN)
return(FALSE);
*load = loadavg[0];
*load = loadavg[LOADAVG_1MIN];
return(TRUE);
}