ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/libstatgrab/src/libstatgrab/cpu_stats.c
(Generate patch)

Comparing projects/libstatgrab/src/libstatgrab/cpu_stats.c (file contents):
Revision 1.7 by pajs, Mon Mar 3 15:26:23 2003 UTC vs.
Revision 1.13 by ats, Sun Oct 19 02:03:02 2003 UTC

# Line 1 | Line 1
1   /*
2   * i-scream central monitoring system
3 < * http://www.i-scream.org.uk
4 < * Copyright (C) 2000-2002 i-scream
3 > * http://www.i-scream.org
4 > * Copyright (C) 2000-2003 i-scream
5   *
6   * This program is free software; you can redistribute it and/or
7   * modify it under the terms of the GNU General Public License
# Line 32 | Line 32
32   #ifdef LINUX
33   #include <stdio.h>
34   #endif
35 + #ifdef FREEBSD
36 + #include <sys/sysctl.h>
37 + #include <sys/dkstat.h>
38 + #endif
39 + #ifdef NETBSD
40 + #include <sys/types.h>
41 + #include <sys/param.h>
42 + #include <sys/sysctl.h>
43 + #include <sys/sched.h>
44 + #endif
45  
46   static cpu_states_t cpu_now;
47   static int cpu_now_uninit=1;
# Line 46 | Line 56 | cpu_states_t *get_cpu_totals(){
56   #ifdef LINUX
57          FILE *f;
58   #endif
59 + #ifdef ALLBSD
60 + #ifndef FREEBSD
61 +        int mib[2];
62 + #endif
63 + #ifdef NETBSD
64 +        u_int64_t cp_time[CPUSTATES];
65 + #else
66 +        long cp_time[CPUSTATES];
67 + #endif
68 +        size_t size;
69 + #endif
70          
71          cpu_now.user=0;
72 <        /* Not stored in linux */
72 >        /* Not stored in linux or freebsd */
73          cpu_now.iowait=0;
74          cpu_now.kernel=0;
75          cpu_now.idle=0;
76 <        /* Not stored in linux */
76 >        /* Not stored in linux or freebsd */
77          cpu_now.swap=0;
78          cpu_now.total=0;
79          /* Not stored in solaris */
# Line 88 | Line 109 | cpu_states_t *get_cpu_totals(){
109                  &cpu_now.nice, \
110                  &cpu_now.kernel, \
111                  &cpu_now.idle)) != 4){
112 +                fclose(f);
113                  return NULL;
114          }
115  
116          fclose(f);
117  
118          cpu_now.total=cpu_now.user+cpu_now.nice+cpu_now.kernel+cpu_now.idle;
119 + #endif
120 + #ifdef ALLBSD
121 + #ifdef FREEBSD
122 +        size = sizeof cp_time;
123 +        if (sysctlbyname("kern.cp_time", &cp_time, &size, NULL, 0) < 0){
124 +                return NULL;
125 +        }
126 + #else
127 +        mib[0] = CTL_KERN;
128 +        mib[1] = KERN_CP_TIME;
129 +        size = sizeof cp_time;
130 +        if (sysctl(mib, 2, &cp_time, &size, NULL, 0) < 0) {
131 +                return NULL;
132 +        }
133 + #endif
134 +
135 +        cpu_now.user=cp_time[CP_USER];
136 +        cpu_now.nice=cp_time[CP_NICE];
137 +        cpu_now.kernel=cp_time[CP_SYS];
138 +        cpu_now.idle=cp_time[CP_IDLE];
139 +        
140 +        cpu_now.total=cpu_now.user+cpu_now.nice+cpu_now.kernel+cpu_now.idle;
141 +
142   #endif
143  
144          cpu_now.systime=time(NULL);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines