fix potential division by zero issues
This commit is contained in:
+21
-10
@@ -34,12 +34,12 @@ cpu_screen(int rep, int display)
|
||||
#undef CPU_BUF_SIZE
|
||||
#define CPU_BUF_SIZE 4
|
||||
static int first = TRUE;
|
||||
static float cpu[CPU_BUF_SIZE + 1][5]; // last buffer is scratch
|
||||
static double cpu[CPU_BUF_SIZE + 1][5]; // last buffer is scratch
|
||||
static int gauge_wid = 0;
|
||||
static int usni_wid = 0;
|
||||
|
||||
int i, j, n;
|
||||
float value;
|
||||
double value;
|
||||
load_type load;
|
||||
|
||||
if (first) {
|
||||
@@ -104,11 +104,20 @@ cpu_screen(int rep, int display)
|
||||
cpu[i][j] = cpu[i + 1][j];
|
||||
|
||||
// Read new data
|
||||
cpu[CPU_BUF_SIZE - 1][0] = ((float) load.user / (float) load.total) * 100.0;
|
||||
cpu[CPU_BUF_SIZE - 1][1] = ((float) load.system / (float) load.total) * 100.0;
|
||||
cpu[CPU_BUF_SIZE - 1][2] = ((float) load.nice / (float) load.total) * 100.0;
|
||||
cpu[CPU_BUF_SIZE - 1][3] = ((float) load.idle / (float) load.total) * 100.0;
|
||||
cpu[CPU_BUF_SIZE - 1][4] = (((float) load.user + (float) load.system + (float) load.nice) / (float) load.total) * 100.0;
|
||||
if (load.total > 0L) {
|
||||
cpu[CPU_BUF_SIZE - 1][0] = 100.0 * ((double) load.user / (double) load.total);
|
||||
cpu[CPU_BUF_SIZE - 1][1] = 100.0 * ((double) load.system / (double) load.total);
|
||||
cpu[CPU_BUF_SIZE - 1][2] = 100.0 * ((double) load.nice / (double) load.total);
|
||||
cpu[CPU_BUF_SIZE - 1][3] = 100.0 * ((double) load.idle / (double) load.total);
|
||||
cpu[CPU_BUF_SIZE - 1][4] = 100.0 * (((double) load.user + (double) load.system + (double) load.nice) / (double) load.total);
|
||||
}
|
||||
else {
|
||||
cpu[CPU_BUF_SIZE - 1][0] = 0.0;
|
||||
cpu[CPU_BUF_SIZE - 1][1] = 0.0;
|
||||
cpu[CPU_BUF_SIZE - 1][2] = 0.0;
|
||||
cpu[CPU_BUF_SIZE - 1][3] = 0.0;
|
||||
cpu[CPU_BUF_SIZE - 1][4] = 0.0;
|
||||
}
|
||||
|
||||
/*
|
||||
// Only clear on first display...
|
||||
@@ -204,12 +213,12 @@ cpu_graph_screen(int rep, int display)
|
||||
#undef CPU_BUF_SIZE
|
||||
#define CPU_BUF_SIZE 2
|
||||
static int first = TRUE;
|
||||
static float cpu[CPU_BUF_SIZE];
|
||||
static double cpu[CPU_BUF_SIZE];
|
||||
static int cpu_past[LCD_MAX_WIDTH];
|
||||
static int gauge_hgt = 0;
|
||||
|
||||
int i, n = 0;
|
||||
float value ;
|
||||
double value ;
|
||||
load_type load;
|
||||
|
||||
if (first) {
|
||||
@@ -248,7 +257,9 @@ cpu_graph_screen(int rep, int display)
|
||||
|
||||
// Read and save new data
|
||||
machine_get_load(&load);
|
||||
cpu[CPU_BUF_SIZE-1] = ((float) load.user + (float) load.system + (float) load.nice) / (float) load.total;
|
||||
cpu[CPU_BUF_SIZE-1] = (load.total > 0L)
|
||||
? ((double) load.user + (double) load.system + (double) load.nice) / (double) load.total
|
||||
: 0;
|
||||
|
||||
// Average values for final result
|
||||
value = 0.0;
|
||||
|
||||
@@ -132,21 +132,20 @@ cpu_smp_screen (int rep, int display)
|
||||
for (j = 4; j < 5; j++)
|
||||
cpu[z][i][j] = cpu[z][i + 1][j];
|
||||
|
||||
if (load[z].total == 0) {
|
||||
continue;
|
||||
}
|
||||
// Read new data
|
||||
#if 0 // we're only using 4 right now
|
||||
cpu[z][CPU_BUF_SIZE - 1][0] = ((float) load[z].user / (float) load[z].total) * 100.0;
|
||||
cpu[z][CPU_BUF_SIZE - 1][1] = ((float) load[z].system / (float) load[z].total) * 100.0;
|
||||
cpu[z][CPU_BUF_SIZE - 1][2] = ((float) load[z].nice / (float) load[z].total) * 100.0;
|
||||
cpu[z][CPU_BUF_SIZE - 1][3] = ((float) load[z].idle / (float) load[z].total) * 100.0;
|
||||
cpu[z][CPU_BUF_SIZE-1][0] = ((float) load[z].user / (float) load[z].total) * 100.0;
|
||||
cpu[z][CPU_BUF_SIZE-1][1] = ((float) load[z].system / (float) load[z].total) * 100.0;
|
||||
cpu[z][CPU_BUF_SIZE-1][2] = ((float) load[z].nice / (float) load[z].total) * 100.0;
|
||||
cpu[z][CPU_BUF_SIZE-1][3] = ((float) load[z].idle / (float) load[z].total) * 100.0;
|
||||
#endif
|
||||
cpu[z][CPU_BUF_SIZE - 1][4] = (((float) load[z].user + (float) load[z].system + (float) load[z].nice) / (float) load[z].total) * 100.0;
|
||||
cpu[z][CPU_BUF_SIZE-1][4] = (load[z].total > 0L)
|
||||
? (((float) load[z].user + (float) load[z].system + (float) load[z].nice) / (float) load[z].total) * 100.0
|
||||
: 0.0;
|
||||
|
||||
// Average values for final result
|
||||
for (i = 4; i < 5; i++) {
|
||||
value = 0;
|
||||
value = 0.0;
|
||||
for (j = 0; j < CPU_BUF_SIZE; j++) {
|
||||
value += cpu[z][j][i];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user