mirror of https://github.com/lindes/ttyload.git
46 lines
1.1 KiB
C
46 lines
1.1 KiB
C
#include "ttyload.h"
|
|
|
|
#include <stdio.h> /* for perror */
|
|
#include <stdlib.h> /* for exit() */
|
|
#include <unistd.h> /* for sleep() */
|
|
|
|
#ifdef NEED_LOCAL_HEADERS
|
|
#include "loadavg.h"
|
|
#else /* don't NEED_LOCAL_HEADERS */
|
|
#include <sys/loadavg.h> /* for getloadavg() */
|
|
#endif /* (don't) NEED_LOCAL_HEADERS */
|
|
|
|
void getload(load_list *loadavgs)
|
|
{
|
|
double theload[3];
|
|
int ret;
|
|
|
|
if((ret = getloadavg(theload, 3)) < 0)
|
|
{
|
|
perror("getloadavg() failed");
|
|
exit(1);
|
|
}
|
|
|
|
/* so the caller _can_ (maybe not _will_) know how we did */
|
|
loadavgs->numloads = ret;
|
|
loadavgs->one_minute = theload[0] * 1024;
|
|
loadavgs->five_minute = theload[1] * 1024;
|
|
loadavgs->fifteen_minute = theload[2] * 1024;
|
|
|
|
switch(ret)
|
|
{
|
|
case 2:
|
|
fprintf(stderr, "15 minute Load average is unreliable.\n");
|
|
sleep(5);
|
|
break;
|
|
case 1:
|
|
fprintf(stderr, "5 and 15 minute load averages are unreliable.\n");
|
|
sleep(5);
|
|
break;
|
|
case 0:
|
|
fprintf(stderr, "Sorry, couldn't get any load "
|
|
"averages. This is, therefore, pointless.\n");
|
|
exit(1);
|
|
}
|
|
}
|