Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37848458
en ru br
Репозитории 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
www.altlinux.org/Changes

Группа :: Графические оболочки/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;
 		}
 	}
 
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin