Skip to content

Commit 742e610

Browse files
Daniel LangeDaniel Lange
authored andcommitted
Merge branch 'wrap' of cgzones/htop
2 parents 15652e7 + 0c19088 commit 742e610

File tree

2 files changed

+37
-10
lines changed

2 files changed

+37
-10
lines changed

DiskIOMeter.c

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,14 +53,25 @@ static void DiskIOMeter_updateValues(Meter* this, char* buffer, int len) {
5353
return;
5454
}
5555

56-
cached_read_diff = (data.totalBytesRead - cached_read_total) / 1024; /* Meter_humanUnit() expects unit in kilo */
56+
if (data.totalBytesRead > cached_read_total) {
57+
cached_read_diff = (data.totalBytesRead - cached_read_total) / 1024; /* Meter_humanUnit() expects unit in kilo */
58+
} else {
59+
cached_read_diff = 0;
60+
}
5761
cached_read_total = data.totalBytesRead;
5862

59-
cached_write_diff = (data.totalBytesWritten - cached_write_total) / 1024; /* Meter_humanUnit() expects unit in kilo */
63+
if (data.totalBytesWritten > cached_write_total) {
64+
cached_write_diff = (data.totalBytesWritten - cached_write_total) / 1024; /* Meter_humanUnit() expects unit in kilo */
65+
} else {
66+
cached_write_diff = 0;
67+
}
6068
cached_write_total = data.totalBytesWritten;
6169

62-
cached_utilisation_diff = 100 * (double)(data.totalMsTimeSpend - cached_msTimeSpend_total) / passedTimeInMs;
63-
70+
if (data.totalMsTimeSpend > cached_msTimeSpend_total) {
71+
cached_utilisation_diff = 100 * (double)(data.totalMsTimeSpend - cached_msTimeSpend_total) / passedTimeInMs;
72+
} else {
73+
cached_utilisation_diff = 0.0;
74+
}
6475
cached_msTimeSpend_total = data.totalMsTimeSpend;
6576
}
6677

NetworkIOMeter.c

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,18 +46,34 @@ static void NetworkIOMeter_updateValues(ATTR_UNUSED Meter* this, char* buffer, i
4646
return;
4747
}
4848

49-
cached_rxb_diff = (bytesReceived - cached_rxb_total) / 1024; /* Meter_humanUnit() expects unit in kilo */
50-
cached_rxb_diff = 1000.0 * cached_rxb_diff / passedTimeInMs; /* convert to per second */
49+
if (bytesReceived > cached_rxb_total) {
50+
cached_rxb_diff = (bytesReceived - cached_rxb_total) / 1024; /* Meter_humanUnit() expects unit in kilo */
51+
cached_rxb_diff = 1000.0 * cached_rxb_diff / passedTimeInMs; /* convert to per second */
52+
} else {
53+
cached_rxb_diff = 0;
54+
}
5155
cached_rxb_total = bytesReceived;
5256

53-
cached_rxp_diff = packetsReceived - cached_rxp_total;
57+
if (packetsReceived > cached_rxp_total) {
58+
cached_rxp_diff = packetsReceived - cached_rxp_total;
59+
} else {
60+
cached_rxp_diff = 0;
61+
}
5462
cached_rxp_total = packetsReceived;
5563

56-
cached_txb_diff = (bytesTransmitted - cached_txb_total) / 1024; /* Meter_humanUnit() expects unit in kilo */
57-
cached_txb_diff = 1000.0 * cached_txb_diff / passedTimeInMs; /* convert to per second */
64+
if (bytesTransmitted > cached_txb_total) {
65+
cached_txb_diff = (bytesTransmitted - cached_txb_total) / 1024; /* Meter_humanUnit() expects unit in kilo */
66+
cached_txb_diff = 1000.0 * cached_txb_diff / passedTimeInMs; /* convert to per second */
67+
} else {
68+
cached_txb_diff = 0;
69+
}
5870
cached_txb_total = bytesTransmitted;
5971

60-
cached_txp_diff = packetsTransmitted - cached_txp_total;
72+
if (packetsTransmitted > cached_txp_total) {
73+
cached_txp_diff = packetsTransmitted - cached_txp_total;
74+
} else {
75+
cached_txp_diff = 0;
76+
}
6177
cached_txp_total = packetsTransmitted;
6278
}
6379

0 commit comments

Comments
 (0)