Репозитории ALT
S: | 0.7.8-alt1 |
5.1: | 0.7.7-alt1 |
4.1: | 0.7.7-alt1 |
4.0: | 0.7.7-alt1 |
3.0: | 0.7.6-alt4 |
Группа :: Графические оболочки/Window Maker
Пакет: wmsysmon
Главная Изменения Спек Патчи Sources Загрузить Gear Bugs and FR Repocop
Патч: wmsysmon-0.7.7-alt-linux26.patch
Скачать
Скачать
src/wmsysmon.c | 59 +++++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 48 insertions(+), 11 deletions(-)
diff --git a/src/wmsysmon.c b/src/wmsysmon.c
index b780ead..b260495 100644
--- a/src/wmsysmon.c
+++ b/src/wmsysmon.c
@@ -83,13 +83,20 @@ int wmsysmon_mask_height = 64;
long start_time = 0;
long start_uptime = 0;
int counter = 0;
-int Mem_l; /* line in /proc/meminfo "Mem:" is on */
-int Swap_l; /* line in /proc/meminfo "Swap:" is on */
-int intr_l; /* line in /proc/stat "intr" is on */
-int rio_l; /* line in /proc/stat "disk_rio" is on */
-int wio_l; /* line in /proc/stat "disk_wio" is on */
-int page_l; /* line in /proc/stat "page" is on */
-int swap_l; /* line in /proc/stat "swap" is on */
+int Mem_l = -1; /* line in /proc/meminfo "Mem:" is on */
+int Swap_l = -1; /* line in /proc/meminfo "Swap:" is on */
+int MemTotal_l = -1; /* line in /proc/meminfo "MemTotal:" is on (2.6.x specific)*/
+int MemFree_l = -1; /* line in /proc/meminfo "MemFree:" is on (2.6.x specific)*/
+int Buffers_l = -1; /* line in /proc/meminfo "Buffers:" is on (2.6.x specific)*/
+int Cached_l = -1; /* line in /proc/meminfo "Cached:" is on (2.6.x specific)*/
+int SwapTotal_l = -1; /* line in /proc/meminfo "MemTotal:" is on (2.6.x specific)*/
+int SwapFree_l = -1; /* line in /proc/meminfo "MemFree:" is on (2.6.x specific)*/
+int intr_l = -1; /* line in /proc/stat "intr" is on */
+int rio_l = -1; /* line in /proc/stat "disk_rio" is on */
+int wio_l = -1; /* line in /proc/stat "disk_wio" is on */
+int page_l = -1; /* line in /proc/stat "page" is on */
+int swap_l = -1; /* line in /proc/stat "swap" is on */
+int cpu_l = -1; /* line in /proc/stat "cpu" is on (2.6.x is in wider format) */
long io_max;
long io_max_diff;
@@ -248,6 +255,13 @@ void wmsysmon_routine(int argc, char **argv)
for(i = 0; fgets(buf, 1024, memfp); i++) {
if(strstr(buf, "Mem:")) Mem_l = i;
else if(strstr(buf, "Swap:")) Swap_l = i;
+ else if(strstr(buf, "MemTotal:")) MemTotal_l = i;
+ else if(strstr(buf, "MemFree:")) MemFree_l = i;
+ else if(strstr(buf, "Buffers:")) Buffers_l = i;
+ else if(strstr(buf, "SwapCached:")) /*just ignore it*/;
+ else if(strstr(buf, "SwapTotal:")) SwapTotal_l = i;
+ else if(strstr(buf, "SwapFree:")) SwapFree_l = i;
+ else if(strstr(buf, "Cached:")) Cached_l = i;
}
/* /proc/stat */
@@ -257,6 +271,7 @@ void wmsysmon_routine(int argc, char **argv)
else if(strstr(buf, "page")) page_l = i;
else if(strstr(buf, "swap")) swap_l = i;
else if(strstr(buf, "intr")) intr_l = i;
+ else if(strstr(buf, "cpu ")) cpu_l = i;
}
while(1) {
@@ -441,13 +456,19 @@ void DrawStuff( void )
static long stage;
static long *tints;
- stage = io = iodiff = iopercent = pageins = pageouts = swapins = swapouts = 0;
+ static long iowait;
+
+ stage = iowait = io = iodiff = iopercent = pageins = pageouts = swapins = swapouts = 0;
statfp = freopen("/proc/stat", "r", statfp);
for(i = 0, ents = 0; ents < 5 && fgets(buf, 1024, statfp); i++) {
- if(i == rio_l) {
+ if(i == cpu_l) {
+ if(sscanf(buf, "%*s %*li %*li %*li %*li %li", &iowait)) {
+ io = iowait;
+ }
+ } else if(i == rio_l) {
tok = strtok(buf, seps);
io += atoi(tok);
@@ -523,14 +544,13 @@ void DrawStuff( void )
io_max = io;
-
if(io_max_diff !=0) iopercent = ((float) iodiff / (float) io_max_diff) * 100.0;
else iopercent = 0;
if(iodiff > io_max_diff) io_max_diff = iodiff;
if (iopercent > 100) iopercent = 100;
-
+
if(iopercent != io_last || first) {
io_last = iopercent;
@@ -732,6 +752,7 @@ void DrawMem(void)
static int last_mem = 0, last_swap = 0, first = 1;
static long mem_total = 0;
static long mem_used = 0;
+ static long mem_free = 0;
static long mem_buffers = 0;
static long mem_cache = 0;
static long swap_total = 0;
@@ -764,6 +785,22 @@ void DrawMem(void)
&swap_used,
&swap_free);
ents++;
+ } else if(i == MemTotal_l) {
+ sscanf(buf, "%*s %ld", &mem_total);
+ mem_used = mem_total - mem_free;
+ } else if(i == MemFree_l) {
+ sscanf(buf, "%*s %ld", &mem_free);
+ mem_used = mem_total - mem_free;
+ } else if(i == Buffers_l) {
+ sscanf(buf, "%*s %ld", &mem_buffers);
+ } else if(i == Cached_l) {
+ sscanf(buf, "%*s %ld", &mem_cache);
+ } else if(i == SwapTotal_l) {
+ sscanf(buf, "%*s %ld", &swap_total);
+ swap_used = swap_total - swap_free;
+ } else if(i == SwapFree_l) {
+ sscanf(buf, "%*s %ld", &swap_free);
+ swap_used = swap_total - swap_free;
}
}