2 * cpu_openbsd - module to get cpu usage, for OpenBSD
4 * Copyright (C) 2001, 2002 Seiichi SATO <ssato@sh.rim.or.jp>
6 * Licensed under the GPL
19 #include <sys/param.h>
20 #include <sys/sysctl.h>
21 #include <sys/dkstat.h>
26 /* You don't need initialization under OpenBSD */
30 /* Returns the current CPU usage in percent */
32 cpu_get_usage(cpu_options
*opts
)
34 int total
, used
, result
;
35 static int pre_total
, pre_used
;
37 int mib
[] = { CTL_KERN
, KERN_CPTIME
};
38 unsigned long int cpu_time
[CPUSTATES
];
39 size_t size
= sizeof(cpu_time
);
42 if (sysctl(mib
, 2, &cpu_time
, &size
, NULL
, 0) < 0)
46 used
= cpu_time
[CP_USER
] + cpu_time
[CP_SYS
];
47 if (!opts
->ignore_nice
) {
48 used
+= cpu_time
[CP_NICE
];
50 total
= used
+ cpu_time
[CP_IDLE
];
54 } else if ((total
- pre_total
) > 0) {
55 result
= 100 * (double)(used
- pre_used
) / (double)(total
- pre_total
);
60 /* save used/total for next calculation */