Fixup fromcvs/togit conversion
[pkgsrcv2.git] / sysutils / wmSMPmon / patches / patch-ab
1 $NetBSD$
2
3 --- wmSMPmon.c.orig     2003-03-10 13:50:11.000000000 +0100
4 +++ wmSMPmon.c  2004-08-25 20:52:07.000000000 +0200
5 @@ -9,5 +9,4 @@
6  *******************************************************************************/
7  
8 -#include       <linux/sys.h>
9  #include       <sys/param.h>
10  #include       <sys/types.h>
11 @@ -20,5 +19,8 @@
12  #include       "wmSMPmon_master.xpm"
13  #include       "wmSMPmon_mask.xbm"
14 -#include       <sys/utsname.h>
15 +//#include     <sys/utsname.h>
16 +#include       <sys/sched.h>
17 +#include       <sys/swap.h>
18 +#include       <sys/sysctl.h>
19  
20  #define                VERSION         "2.2"
21 @@ -35,12 +37,73 @@
22  void usage(void) ;
23  
24 +int getCpuUsage() {
25 +        int mib[] = { CTL_KERN, KERN_CP_TIME };
26 +        u_int64_t cpu_time[CPUSTATES];
27 +        size_t size = sizeof(cpu_time);
28 +        int total, used, result;
29 +        static int pre_total, pre_used;
30 +
31 +        if (sysctl(mib, 2, &cpu_time, &size, NULL, 0) < 0)
32 +                return 0;
33 +        used = cpu_time[CP_USER] + cpu_time[CP_SYS] + cpu_time[CP_NICE] + cpu_time[CP_INTR];
34 +        total = used + cpu_time[CP_IDLE];
35 +        if ((pre_total == 0) || !(total - pre_total > 0)) {
36 +                result = 0;
37 +        } else {
38 +                result = 100 * (double)(used - pre_used) / (double)(total - pre_total);
39 +        }
40 +        pre_used = used;
41 +        pre_total = total;
42 +
43 +        return result;
44 +};
45 +
46 +int getMemUsage() {
47 +        static int mib[] = { CTL_VM, VM_METER };
48 +        struct vmtotal vm;
49 +        size_t size = sizeof(vm);
50 +        int per_mem;
51 +
52 +       per_mem = 0;
53 +        if (sysctl(mib, 2, &vm, &size, NULL, 0) < 0)
54 +                bzero(&vm, sizeof(vm));
55 +        if (vm.t_rm > 0)
56 +                per_mem = 100 * (double) vm.t_rm / (double) (vm.t_rm + vm.t_free);
57 +        if (per_mem > 97) per_mem = 100;
58 +
59 +        return per_mem;
60 +};
61 +
62 +int getSwapUsage() {
63 +        int num_swap;
64 +        struct swapent *swap_dev;
65 +        int i, sused, stotal;
66 +
67 +        stotal = sused = 0;
68 +
69 +        if ((num_swap = swapctl(SWAP_NSWAP, 0, 0)) == 0)
70 +                return 0;
71 +        if ((swap_dev = malloc(num_swap * sizeof(*swap_dev))) == NULL)
72 +                return 0;
73 +        if (swapctl(SWAP_STATS, swap_dev, num_swap) == -1)
74 +                return 0;
75 +
76 +        for (i = 0; i < num_swap; i++) {
77 +                if (swap_dev[i].se_flags & SWF_ENABLE) {
78 +                        sused += swap_dev[i].se_inuse;
79 +                        stotal += swap_dev[i].se_nblks;
80 +                }
81 +        }
82 +
83 +        free(swap_dev);
84 +        if (sused == 0)
85 +                return 0;
86 +        return (100 * (double) sused / (double) stotal);
87 +};
88 +
89  int main(int argc, char **argv)
90  {
91     XEvent              Event ;
92  
93 -   unsigned char       *t = NULL,
94 -                        *u = NULL,
95 -                        tmp[192] ;
96 -
97     unsigned int                t0[TAILLE_T],
98                         t1[TAILLE_T],
99 @@ -57,7 +120,5 @@
100                          draw_graph = FAUX ;
101                          
102 -   unsigned long       mem, prec_mem = 0, prec_swap = 0,
103 -                       total0o = 0, charge0o = 0, 
104 -                       total1o = 0, charge1o = 0, cpu0o=0, cpu1o=0 ;
105 +   unsigned long       mem, prec_mem = 0, prec_swap = 0;
106  
107     register unsigned long      charge, total, cpu, i = 0 ;
108 @@ -107,97 +168,25 @@
109        if(lecture)
110        {
111 -         i = open("/proc/stat", O_RDONLY);
112 -        read(i, tmp, 192);
113 -         close(i);
114 -               
115 -         strtok(tmp, "\n");
116 -         t = strtok(NULL, "\n");
117 -         u = strtok(NULL, "\n"); /* For CPU 1 */
118 -               
119 -         strtok(t, " "); /* CPU 0 */
120 -         charge = strtol(strtok(NULL, " "), NULL, 10) + 
121 -                 strtol(strtok(NULL, " "), NULL, 10) +
122 -                 strtol(strtok(NULL, " "), NULL, 10);
123 -         total = charge+ strtol(strtok(NULL, " "), NULL, 10); 
124 -         if(!charge || !total)
125 -         {
126 -            puts(ERREUR_SMP) ;
127 -            exit(ERREUR) ;
128 -         }
129 -         cpu =  ((HAUTEUR * (charge - charge0o)) / (total - total0o + 0.001)) + 1 ;
130 -         total0o = total ;
131 -         charge0o = charge ;
132 -         cpu0t = cpu0t + cpu ;
133 -         if(cpu != cpu0o)
134 -         {
135 -            delta = HAUTEUR - cpu ;
136 -                   copyXPMArea(111, 0, 3, HAUTEUR, 4, 5) ;
137 -                   copyXPMArea(108, delta, 3, cpu, 4, 5 + delta) ;
138 -            cpu0o = cpu;
139 -         }
140 -         if(strncmp ("cpu1", u, 4) == 0)
141 -         {
142 -            strtok(u, " ");  /* CPU 1*/
143 -            charge = strtol(strtok(NULL, " "), NULL, 10) + 
144 -                 strtol(strtok(NULL, " "), NULL, 10) +
145 -                 strtol(strtok(NULL, " "), NULL, 10);
146 -            total = charge+ strtol(strtok(NULL, " "), NULL, 10); 
147 -            cpu = ((HAUTEUR * (charge - charge1o)) / (total - total1o + 0.001)) + 1 ;
148 -            total1o = total;
149 -            charge1o = charge;         
150 -         }
151 -         cpu1t = cpu1t + cpu ;
152 -         if(cpu != cpu1o)
153 -         {
154 -            delta = HAUTEUR - cpu ;
155 -                   copyXPMArea(111, 0, 3, HAUTEUR, 9, 5) ;
156 -                   copyXPMArea(108, delta, 3, cpu, 9, 5 + delta) ;
157 -            cpu1o = cpu;
158 -         }             
159 -         if(c1 > DIV1)
160 -         {
161 -            i = open("/proc/meminfo", O_RDONLY);
162 -            read(i, tmp, 192);
163 -            close(i);
164 -            strtok(tmp, "\n");
165 -            t = strtok(NULL, "\n");
166 -            u = strtok(NULL, "\n");    
167 -            strtok(t, " ");
168 -            total = atoi(strtok(NULL, " "));
169 -            charge = atoi(strtok(NULL, " "));
170 -            strtok(NULL, " ");
171 -            strtok(NULL, " ");
172 -            strtok(NULL, " ");
173 -            cpu = atoi(strtok(NULL, " "));
174 -            
175 -            mem = ((charge - cpu) / (total / 100)) ;
176 -            if(mem != prec_mem)
177 -            {
178 -               copyXPMArea(30, 63, 30, 8, 29, 39) ;
179 -               copyXPMArea(0, 63, (mem * 30 / 100), 8, 29, 39) ;
180 -               prec_mem = mem ;
181 -            }          
182 -            strtok(u, " ");
183 -            if(!no_swap)
184 -            {
185 -               total = charge = 0 ;
186 -               total = atoi(strtok(NULL, " "));
187 -               strtok(NULL, " ");
188 -               charge = atoi(strtok(NULL, " "));
189 -               if(!charge || !total)
190 -               {
191 -                  puts(ERREUR_SWP) ;
192 -                  exit(ERREUR) ;
193 -               }
194 -               mem = 100 - (charge / (total / 100)) ; 
195 -               if(mem != prec_swap)
196 -               {
197 -                  copyXPMArea(30, 63, 30, 8, 29, 50) ;
198 -                  copyXPMArea(0, 63, (mem * 30 / 100), 8, 29, 50) ;
199 -                  prec_swap = mem ;
200 -               }
201 -            }
202 -            c1 = 0;
203 -         }
204 +       cpu = getCpuUsage();
205 +       delta = (100 - cpu) * HAUTEUR / 100;
206 +       copyXPMArea(108, 0, 3, HAUTEUR, 4, 5);
207 +       copyXPMArea(108, 0, 3, HAUTEUR, 9, 5);
208 +       copyXPMArea(111, 0, 3, delta, 4, 5);
209 +       copyXPMArea(111, 0, 3, delta, 9, 5);
210 +       
211 +       mem = getMemUsage();
212 +       if(mem != prec_mem) {
213 +               copyXPMArea(30, 63, 30, 8, 29, 39);
214 +               copyXPMArea(0, 63, (mem * 30 / 100), 8, 29, 39);
215 +               prec_mem = mem;
216 +       }
217 +       if(!no_swap) {
218 +               mem = getSwapUsage();
219 +               if(mem != prec_swap) {
220 +                       copyXPMArea(30, 63, 30, 8, 29, 50);
221 +                       copyXPMArea(0, 63, (mem * 30 / 100), 8, 29, 50);
222 +                       prec_swap = mem;
223 +               }
224 +       }
225           if(c2 > DIV2)
226              draw_graph = VRAI ;
227 @@ -210,10 +199,13 @@
228                 tm[i - 1] = tm[i] ;
229              }
230 -            if((t0[TAILLE_T - 1] = cpu0t / c2) > HAUTEUR)
231 +/*            if((t0[TAILLE_T - 1] = cpu0t / c2) > HAUTEUR)
232                 t0[TAILLE_T - 1] = HAUTEUR ;
233              if((t1[TAILLE_T - 1] = cpu1t / c2) > HAUTEUR)
234                 t1[TAILLE_T - 1] = HAUTEUR ;
235              if((tm[TAILLE_T - 1] = (cpu0t + cpu1t) / (2 * c2)) > HAUTEUR)
236 -               tm[TAILLE_T - 1] = HAUTEUR ;
237 +               tm[TAILLE_T - 1] = HAUTEUR ;*/
238 +           t0[TAILLE_T - 1] = cpu * HAUTEUR / 100;
239 +           t1[TAILLE_T - 1] = cpu * HAUTEUR / 100;
240 +           tm[TAILLE_T - 1] = cpu * HAUTEUR / 100;
241              cpu0t = 0 ;
242              cpu1t = 0 ;