head 1.2; access; symbols pkgsrc-2026Q1:1.2.0.106 pkgsrc-2026Q1-base:1.2 pkgsrc-2025Q4:1.2.0.104 pkgsrc-2025Q4-base:1.2 pkgsrc-2025Q3:1.2.0.102 pkgsrc-2025Q3-base:1.2 pkgsrc-2025Q2:1.2.0.100 pkgsrc-2025Q2-base:1.2 pkgsrc-2025Q1:1.2.0.98 pkgsrc-2025Q1-base:1.2 pkgsrc-2024Q4:1.2.0.96 pkgsrc-2024Q4-base:1.2 pkgsrc-2024Q3:1.2.0.94 pkgsrc-2024Q3-base:1.2 pkgsrc-2024Q2:1.2.0.92 pkgsrc-2024Q2-base:1.2 pkgsrc-2024Q1:1.2.0.90 pkgsrc-2024Q1-base:1.2 pkgsrc-2023Q4:1.2.0.88 pkgsrc-2023Q4-base:1.2 pkgsrc-2023Q3:1.2.0.86 pkgsrc-2023Q3-base:1.2 pkgsrc-2023Q2:1.2.0.84 pkgsrc-2023Q2-base:1.2 pkgsrc-2023Q1:1.2.0.82 pkgsrc-2023Q1-base:1.2 pkgsrc-2022Q4:1.2.0.80 pkgsrc-2022Q4-base:1.2 pkgsrc-2022Q3:1.2.0.78 pkgsrc-2022Q3-base:1.2 pkgsrc-2022Q2:1.2.0.76 pkgsrc-2022Q2-base:1.2 pkgsrc-2022Q1:1.2.0.74 pkgsrc-2022Q1-base:1.2 pkgsrc-2021Q4:1.2.0.72 pkgsrc-2021Q4-base:1.2 pkgsrc-2021Q3:1.2.0.70 pkgsrc-2021Q3-base:1.2 pkgsrc-2021Q2:1.2.0.68 pkgsrc-2021Q2-base:1.2 pkgsrc-2021Q1:1.2.0.66 pkgsrc-2021Q1-base:1.2 pkgsrc-2020Q4:1.2.0.64 pkgsrc-2020Q4-base:1.2 pkgsrc-2020Q3:1.2.0.62 pkgsrc-2020Q3-base:1.2 pkgsrc-2020Q2:1.2.0.58 pkgsrc-2020Q2-base:1.2 pkgsrc-2020Q1:1.2.0.38 pkgsrc-2020Q1-base:1.2 pkgsrc-2019Q4:1.2.0.60 pkgsrc-2019Q4-base:1.2 pkgsrc-2019Q3:1.2.0.56 pkgsrc-2019Q3-base:1.2 pkgsrc-2019Q2:1.2.0.54 pkgsrc-2019Q2-base:1.2 pkgsrc-2019Q1:1.2.0.52 pkgsrc-2019Q1-base:1.2 pkgsrc-2018Q4:1.2.0.50 pkgsrc-2018Q4-base:1.2 pkgsrc-2018Q3:1.2.0.48 pkgsrc-2018Q3-base:1.2 pkgsrc-2018Q2:1.2.0.46 pkgsrc-2018Q2-base:1.2 pkgsrc-2018Q1:1.2.0.44 pkgsrc-2018Q1-base:1.2 pkgsrc-2017Q4:1.2.0.42 pkgsrc-2017Q4-base:1.2 pkgsrc-2017Q3:1.2.0.40 pkgsrc-2017Q3-base:1.2 pkgsrc-2017Q2:1.2.0.36 pkgsrc-2017Q2-base:1.2 pkgsrc-2017Q1:1.2.0.34 pkgsrc-2017Q1-base:1.2 pkgsrc-2016Q4:1.2.0.32 pkgsrc-2016Q4-base:1.2 pkgsrc-2016Q3:1.2.0.30 pkgsrc-2016Q3-base:1.2 pkgsrc-2016Q2:1.2.0.28 pkgsrc-2016Q2-base:1.2 pkgsrc-2016Q1:1.2.0.26 pkgsrc-2016Q1-base:1.2 pkgsrc-2015Q4:1.2.0.24 pkgsrc-2015Q4-base:1.2 pkgsrc-2015Q3:1.2.0.22 pkgsrc-2015Q3-base:1.2 pkgsrc-2015Q2:1.2.0.20 pkgsrc-2015Q2-base:1.2 pkgsrc-2015Q1:1.2.0.18 pkgsrc-2015Q1-base:1.2 pkgsrc-2014Q4:1.2.0.16 pkgsrc-2014Q4-base:1.2 pkgsrc-2014Q3:1.2.0.14 pkgsrc-2014Q3-base:1.2 pkgsrc-2014Q2:1.2.0.12 pkgsrc-2014Q2-base:1.2 pkgsrc-2014Q1:1.2.0.10 pkgsrc-2014Q1-base:1.2 pkgsrc-2013Q4:1.2.0.8 pkgsrc-2013Q4-base:1.2 pkgsrc-2013Q3:1.2.0.6 pkgsrc-2013Q3-base:1.2 pkgsrc-2013Q2:1.2.0.4 pkgsrc-2013Q2-base:1.2 pkgsrc-2013Q1:1.2.0.2 pkgsrc-2013Q1-base:1.2 pkgsrc-2012Q4:1.1.1.1.0.68 pkgsrc-2012Q4-base:1.1.1.1 pkgsrc-2012Q3:1.1.1.1.0.66 pkgsrc-2012Q3-base:1.1.1.1 pkgsrc-2012Q2:1.1.1.1.0.64 pkgsrc-2012Q2-base:1.1.1.1 pkgsrc-2012Q1:1.1.1.1.0.62 pkgsrc-2012Q1-base:1.1.1.1 pkgsrc-2011Q4:1.1.1.1.0.60 pkgsrc-2011Q4-base:1.1.1.1 pkgsrc-2011Q3:1.1.1.1.0.58 pkgsrc-2011Q3-base:1.1.1.1 pkgsrc-2011Q2:1.1.1.1.0.56 pkgsrc-2011Q2-base:1.1.1.1 pkgsrc-2011Q1:1.1.1.1.0.54 pkgsrc-2011Q1-base:1.1.1.1 pkgsrc-2010Q4:1.1.1.1.0.52 pkgsrc-2010Q4-base:1.1.1.1 pkgsrc-2010Q3:1.1.1.1.0.50 pkgsrc-2010Q3-base:1.1.1.1 pkgsrc-2010Q2:1.1.1.1.0.48 pkgsrc-2010Q2-base:1.1.1.1 pkgsrc-2010Q1:1.1.1.1.0.46 pkgsrc-2010Q1-base:1.1.1.1 pkgsrc-2009Q4:1.1.1.1.0.44 pkgsrc-2009Q4-base:1.1.1.1 pkgsrc-2009Q3:1.1.1.1.0.42 pkgsrc-2009Q3-base:1.1.1.1 pkgsrc-2009Q2:1.1.1.1.0.40 pkgsrc-2009Q2-base:1.1.1.1 pkgsrc-2009Q1:1.1.1.1.0.38 pkgsrc-2009Q1-base:1.1.1.1 pkgsrc-2008Q4:1.1.1.1.0.36 pkgsrc-2008Q4-base:1.1.1.1 pkgsrc-2008Q3:1.1.1.1.0.34 pkgsrc-2008Q3-base:1.1.1.1 cube-native-xorg:1.1.1.1.0.32 cube-native-xorg-base:1.1.1.1 pkgsrc-2008Q2:1.1.1.1.0.30 pkgsrc-2008Q2-base:1.1.1.1 cwrapper:1.1.1.1.0.28 pkgsrc-2008Q1:1.1.1.1.0.26 pkgsrc-2008Q1-base:1.1.1.1 pkgsrc-2007Q4:1.1.1.1.0.24 pkgsrc-2007Q4-base:1.1.1.1 pkgsrc-2007Q3:1.1.1.1.0.22 pkgsrc-2007Q3-base:1.1.1.1 pkgsrc-2007Q2:1.1.1.1.0.20 pkgsrc-2007Q2-base:1.1.1.1 pkgsrc-2007Q1:1.1.1.1.0.18 pkgsrc-2007Q1-base:1.1.1.1 pkgsrc-2006Q4:1.1.1.1.0.16 pkgsrc-2006Q4-base:1.1.1.1 pkgsrc-2006Q3:1.1.1.1.0.14 pkgsrc-2006Q3-base:1.1.1.1 pkgsrc-2006Q2:1.1.1.1.0.12 pkgsrc-2006Q2-base:1.1.1.1 pkgsrc-2006Q1:1.1.1.1.0.10 pkgsrc-2006Q1-base:1.1.1.1 pkgsrc-2005Q4:1.1.1.1.0.8 pkgsrc-2005Q4-base:1.1.1.1 pkgsrc-2005Q3:1.1.1.1.0.6 pkgsrc-2005Q3-base:1.1.1.1 pkgsrc-2005Q2:1.1.1.1.0.4 pkgsrc-2005Q2-base:1.1.1.1 pkgsrc-2005Q1:1.1.1.1.0.2 pkgsrc-2005Q1-base:1.1.1.1 pkgsrc-base:1.1.1.1 TNF:1.1.1; locks; strict; comment @# @; 1.2 date 2013.01.11.23.31.15; author joerg; state Exp; branches; next 1.1; 1.1 date 2005.01.12.11.52.10; author agc; state Exp; branches 1.1.1.1; next ; 1.1.1.1 date 2005.01.12.11.52.10; author agc; state Exp; branches; next ; desc @@ 1.2 log @Requires sys/vmmeter.h on NetBSD/current @ text @$NetBSD: patch-ab,v 1.1.1.1 2005/01/12 11:52:10 agc Exp $ --- wmSMPmon.c.orig 2003-03-10 12:50:11.000000000 +0000 +++ wmSMPmon.c @@@@ -8,7 +8,6 @@@@ CONTRIBUTOR: Alain Schröder #include #include #include @@@@ -19,7 +18,13 @@@@ CONTRIBUTOR: Alain Schröder +//#include +#include +#include +#include +#ifdef __NetBSD__ +#include +#endif #define VERSION "2.2" #define T_DATA 255 @@@@ -34,14 +39,75 @@@@ CONTRIBUTOR: Alain Schröder 0)) { + result = 0; + } else { + result = 100 * (double)(used - pre_used) / (double)(total - pre_total); + } + pre_used = used; + pre_total = total; + + return result; +}; + +int getMemUsage() { + static int mib[] = { CTL_VM, VM_METER }; + struct vmtotal vm; + size_t size = sizeof(vm); + int per_mem; + + per_mem = 0; + if (sysctl(mib, 2, &vm, &size, NULL, 0) < 0) + bzero(&vm, sizeof(vm)); + if (vm.t_rm > 0) + per_mem = 100 * (double) vm.t_rm / (double) (vm.t_rm + vm.t_free); + if (per_mem > 97) per_mem = 100; + + return per_mem; +}; + +int getSwapUsage() { + int num_swap; + struct swapent *swap_dev; + int i, sused, stotal; + + stotal = sused = 0; + + if ((num_swap = swapctl(SWAP_NSWAP, 0, 0)) == 0) + return 0; + if ((swap_dev = malloc(num_swap * sizeof(*swap_dev))) == NULL) + return 0; + if (swapctl(SWAP_STATS, swap_dev, num_swap) == -1) + return 0; + + for (i = 0; i < num_swap; i++) { + if (swap_dev[i].se_flags & SWF_ENABLE) { + sused += swap_dev[i].se_inuse; + stotal += swap_dev[i].se_nblks; + } + } + + free(swap_dev); + if (sused == 0) + return 0; + return (100 * (double) sused / (double) stotal); +}; + int main(int argc, char **argv) { XEvent Event ; - unsigned char *t = NULL, - *u = NULL, - tmp[192] ; - unsigned int t0[TAILLE_T], t1[TAILLE_T], tm[TAILLE_T], @@@@ -56,9 +122,7 @@@@ int main(int argc, char **argv) no_swap = FAUX, draw_graph = FAUX ; - unsigned long mem, prec_mem = 0, prec_swap = 0, - total0o = 0, charge0o = 0, - total1o = 0, charge1o = 0, cpu0o=0, cpu1o=0 ; + unsigned long mem, prec_mem = 0, prec_swap = 0; register unsigned long charge, total, cpu, i = 0 ; @@@@ -106,99 +170,27 @@@@ int main(int argc, char **argv) { if(lecture) { - i = open("/proc/stat", O_RDONLY); - read(i, tmp, 192); - close(i); - - strtok(tmp, "\n"); - t = strtok(NULL, "\n"); - u = strtok(NULL, "\n"); /* For CPU 1 */ - - strtok(t, " "); /* CPU 0 */ - charge = strtol(strtok(NULL, " "), NULL, 10) + - strtol(strtok(NULL, " "), NULL, 10) + - strtol(strtok(NULL, " "), NULL, 10); - total = charge+ strtol(strtok(NULL, " "), NULL, 10); - if(!charge || !total) - { - puts(ERREUR_SMP) ; - exit(ERREUR) ; - } - cpu = ((HAUTEUR * (charge - charge0o)) / (total - total0o + 0.001)) + 1 ; - total0o = total ; - charge0o = charge ; - cpu0t = cpu0t + cpu ; - if(cpu != cpu0o) - { - delta = HAUTEUR - cpu ; - copyXPMArea(111, 0, 3, HAUTEUR, 4, 5) ; - copyXPMArea(108, delta, 3, cpu, 4, 5 + delta) ; - cpu0o = cpu; - } - if(strncmp ("cpu1", u, 4) == 0) - { - strtok(u, " "); /* CPU 1*/ - charge = strtol(strtok(NULL, " "), NULL, 10) + - strtol(strtok(NULL, " "), NULL, 10) + - strtol(strtok(NULL, " "), NULL, 10); - total = charge+ strtol(strtok(NULL, " "), NULL, 10); - cpu = ((HAUTEUR * (charge - charge1o)) / (total - total1o + 0.001)) + 1 ; - total1o = total; - charge1o = charge; - } - cpu1t = cpu1t + cpu ; - if(cpu != cpu1o) - { - delta = HAUTEUR - cpu ; - copyXPMArea(111, 0, 3, HAUTEUR, 9, 5) ; - copyXPMArea(108, delta, 3, cpu, 9, 5 + delta) ; - cpu1o = cpu; - } - if(c1 > DIV1) - { - i = open("/proc/meminfo", O_RDONLY); - read(i, tmp, 192); - close(i); - strtok(tmp, "\n"); - t = strtok(NULL, "\n"); - u = strtok(NULL, "\n"); - strtok(t, " "); - total = atoi(strtok(NULL, " ")); - charge = atoi(strtok(NULL, " ")); - strtok(NULL, " "); - strtok(NULL, " "); - strtok(NULL, " "); - cpu = atoi(strtok(NULL, " ")); - - mem = ((charge - cpu) / (total / 100)) ; - if(mem != prec_mem) - { - copyXPMArea(30, 63, 30, 8, 29, 39) ; - copyXPMArea(0, 63, (mem * 30 / 100), 8, 29, 39) ; - prec_mem = mem ; - } - strtok(u, " "); - if(!no_swap) - { - total = charge = 0 ; - total = atoi(strtok(NULL, " ")); - strtok(NULL, " "); - charge = atoi(strtok(NULL, " ")); - if(!charge || !total) - { - puts(ERREUR_SWP) ; - exit(ERREUR) ; - } - mem = 100 - (charge / (total / 100)) ; - if(mem != prec_swap) - { - copyXPMArea(30, 63, 30, 8, 29, 50) ; - copyXPMArea(0, 63, (mem * 30 / 100), 8, 29, 50) ; - prec_swap = mem ; - } - } - c1 = 0; - } + cpu = getCpuUsage(); + delta = (100 - cpu) * HAUTEUR / 100; + copyXPMArea(108, 0, 3, HAUTEUR, 4, 5); + copyXPMArea(108, 0, 3, HAUTEUR, 9, 5); + copyXPMArea(111, 0, 3, delta, 4, 5); + copyXPMArea(111, 0, 3, delta, 9, 5); + + mem = getMemUsage(); + if(mem != prec_mem) { + copyXPMArea(30, 63, 30, 8, 29, 39); + copyXPMArea(0, 63, (mem * 30 / 100), 8, 29, 39); + prec_mem = mem; + } + if(!no_swap) { + mem = getSwapUsage(); + if(mem != prec_swap) { + copyXPMArea(30, 63, 30, 8, 29, 50); + copyXPMArea(0, 63, (mem * 30 / 100), 8, 29, 50); + prec_swap = mem; + } + } if(c2 > DIV2) draw_graph = VRAI ; if(draw_graph) @@@@ -209,12 +201,15 @@@@ int main(int argc, char **argv) t1[i - 1] = t1[i] ; tm[i - 1] = tm[i] ; } - if((t0[TAILLE_T - 1] = cpu0t / c2) > HAUTEUR) +/* if((t0[TAILLE_T - 1] = cpu0t / c2) > HAUTEUR) t0[TAILLE_T - 1] = HAUTEUR ; if((t1[TAILLE_T - 1] = cpu1t / c2) > HAUTEUR) t1[TAILLE_T - 1] = HAUTEUR ; if((tm[TAILLE_T - 1] = (cpu0t + cpu1t) / (2 * c2)) > HAUTEUR) - tm[TAILLE_T - 1] = HAUTEUR ; + tm[TAILLE_T - 1] = HAUTEUR ;*/ + t0[TAILLE_T - 1] = cpu * HAUTEUR / 100; + t1[TAILLE_T - 1] = cpu * HAUTEUR / 100; + tm[TAILLE_T - 1] = cpu * HAUTEUR / 100; cpu0t = 0 ; cpu1t = 0 ; switch(etat) @ 1.1 log @Initial revision @ text @d1 1 a1 1 $NetBSD$ d3 4 a6 3 --- wmSMPmon.c.orig 2003-03-10 13:50:11.000000000 +0100 +++ wmSMPmon.c 2004-08-25 20:52:07.000000000 +0200 @@@@ -9,5 +9,4 @@@@ d12 3 a14 1 @@@@ -20,5 +19,8 @@@@ d22 3 d27 3 a29 1 @@@@ -35,12 +37,73 @@@@ d107 3 a109 1 @@@@ -57,7 +120,5 @@@@ d118 3 a120 1 @@@@ -107,97 +168,25 @@@@ d239 3 a241 1 @@@@ -210,10 +199,13 @@@@ d257 1 @ 1.1.1.1 log @Initial import of wmSMPmon-2.3 into the Packages Collection, provided by Joel CARNAT in PR 28939, minor modifications by myself. wmSMPmon is a CPU monitoring applet for SMP systems running Window Maker. (it displays SMP CPU load just fine, despite what it says in the PR). @ text @@