native version of CpuPerc.java
This commit is contained in:
parent
93db8c99cd
commit
043afd2608
|
@ -19,6 +19,19 @@
|
||||||
#ifndef SIGAR_FORMAT_H
|
#ifndef SIGAR_FORMAT_H
|
||||||
#define SIGAR_FORMAT_H
|
#define SIGAR_FORMAT_H
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
double user;
|
||||||
|
double sys;
|
||||||
|
double nice;
|
||||||
|
double idle;
|
||||||
|
double wait;
|
||||||
|
double combined;
|
||||||
|
} sigar_cpu_perc_t;
|
||||||
|
|
||||||
|
SIGAR_DECLARE(int) sigar_cpu_perc_calculate(sigar_cpu_t *prev,
|
||||||
|
sigar_cpu_t *curr,
|
||||||
|
sigar_cpu_perc_t *perc);
|
||||||
|
|
||||||
SIGAR_DECLARE(int) sigar_uptime_string(sigar_t *sigar,
|
SIGAR_DECLARE(int) sigar_uptime_string(sigar_t *sigar,
|
||||||
sigar_uptime_t *uptime,
|
sigar_uptime_t *uptime,
|
||||||
char *buffer,
|
char *buffer,
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
#include "sigar_private.h"
|
#include "sigar_private.h"
|
||||||
#include "sigar_util.h"
|
#include "sigar_util.h"
|
||||||
#include "sigar_os.h"
|
#include "sigar_os.h"
|
||||||
|
#include "sigar_format.h"
|
||||||
|
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
@ -604,3 +605,35 @@ SIGAR_DECLARE(char *)sigar_net_services_name_get(sigar_t *sigar,
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SIGAR_DECLARE(int) sigar_cpu_perc_calculate(sigar_cpu_t *prev,
|
||||||
|
sigar_cpu_t *curr,
|
||||||
|
sigar_cpu_perc_t *perc)
|
||||||
|
{
|
||||||
|
double diff_user, diff_sys, diff_nice, diff_idle, diff_wait, diff_total;
|
||||||
|
|
||||||
|
diff_user = curr->user - prev->user;
|
||||||
|
diff_sys = curr->sys - prev->sys;
|
||||||
|
diff_nice = curr->nice - prev->nice;
|
||||||
|
diff_idle = curr->idle - prev->idle;
|
||||||
|
diff_wait = curr->wait - prev->wait;
|
||||||
|
|
||||||
|
diff_user = diff_user < 0 ? 0 : diff_user;
|
||||||
|
diff_sys = diff_sys < 0 ? 0 : diff_sys;
|
||||||
|
diff_nice = diff_nice < 0 ? 0 : diff_nice;
|
||||||
|
diff_idle = diff_idle < 0 ? 0 : diff_idle;
|
||||||
|
diff_wait = diff_wait < 0 ? 0 : diff_wait;
|
||||||
|
|
||||||
|
diff_total =
|
||||||
|
diff_user + diff_sys + diff_nice + diff_idle + diff_wait;
|
||||||
|
|
||||||
|
perc->user = diff_user / diff_total;
|
||||||
|
perc->sys = diff_sys / diff_total;
|
||||||
|
perc->nice = diff_nice / diff_total;
|
||||||
|
perc->idle = diff_idle / diff_total;
|
||||||
|
perc->wait = diff_wait / diff_total;
|
||||||
|
perc->combined =
|
||||||
|
perc->user + perc->sys + perc->nice + perc->wait;
|
||||||
|
|
||||||
|
return SIGAR_OK;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue