summaryrefslogtreecommitdiffstats
path: root/recipes/cpusage/cpusage-0.1/cpusage.patch
blob: 091c7a9817a72e505132fb79a65a155ac0b6656c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
--- /orig-cpusage.c	2005-08-16 15:37:25.000000000 +0300
+++ /cpusage.c	2006-03-17 22:27:09.000000000 +0200
@@ -168,6 +168,7 @@
 int main(int argc, char** argv) {
 
     int i,c,limit;
+    int single;  /* run just one's and exit */
     int avg; /* is avg measurement allready running */ 
     int avg_run; /* did we allready had an avg measurement */
     static long cp_time1[CPUSTATES];
@@ -184,15 +185,21 @@
     long total;
     limit = LIMIT;
     output = 0; /* human readable */
+    single = 1; /*run continuesly */
 
     /* reading commandline options */
     while (1) {
-	c = getopt(argc, argv, "aohl:");
+	c = getopt(argc, argv, "saohl:");
 	
-	if (c == -1)
+	if (c == -1){
 	    break;
+        }
 
 	switch(c){
+        case 's':
+        /*run once and exit */
+           single = 0;             
+           break;
 	/* use avg from begin to end -> same as "-l 100" */
 	case 'a':
 	    limit = 100; 
@@ -278,6 +285,10 @@
 
 	print_perc(cpu_perc, ""); 
 
+        if (!single ) {
+          breakloop=1;
+        }
+
 	if (breakloop) {
 	    if (avg) {
 		avg = 0;
@@ -292,7 +303,8 @@
     if (sigaction(SIGINT, &sigold, &signew) < 0 ){
 	fprintf(stderr, "Could not restore signal handler -> exiting");
     }
-    
+
+   if (single != 0) {    
     printf("---Summary----\n");
     
     print_perc(cpu_min, "Min");
@@ -301,6 +313,7 @@
 
     perc(CPUSTATES, cp_avg_start, cp_avg_stop, cp_diff); 
     print_perc(cpu_perc, "Avg");
+  }
     
     return 0;
 }