aboutsummaryrefslogtreecommitdiffstats
path: root/plugin_proc_stat.c
diff options
context:
space:
mode:
Diffstat (limited to 'plugin_proc_stat.c')
-rw-r--r--plugin_proc_stat.c44
1 files changed, 41 insertions, 3 deletions
diff --git a/plugin_proc_stat.c b/plugin_proc_stat.c
index 947045f..f90b02d 100644
--- a/plugin_proc_stat.c
+++ b/plugin_proc_stat.c
@@ -1,9 +1,9 @@
-/* $Id: plugin_proc_stat.c 789 2007-04-30 04:48:10Z michael $
- * $URL: https://ssl.bulix.org/svn/lcd4linux/branches/0.10.1/plugin_proc_stat.c $
+/* $Id: plugin_proc_stat.c 1079 2010-01-15 21:44:04Z volker $
+ * $URL: https://ssl.bulix.org/svn/lcd4linux/trunk/plugin_proc_stat.c $
*
* plugin for /proc/stat parsing
*
- * Copyright (C) 2003 Michael Reinelt <reinelt@eunet.at>
+ * Copyright (C) 2003 Michael Reinelt <michael@reinelt.co.at>
* Copyright (C) 2004 The LCD4Linux Team <lcd4linux-devel@users.sourceforge.net>
*
* This file is part of LCD4Linux.
@@ -41,6 +41,11 @@
#include <ctype.h>
#include <errno.h>
+#ifdef __MAC_OS_X_VERSION_10_3
+#include <mach/mach_host.h>
+#include <mach/host_info.h>
+#endif
+
#include "debug.h"
#include "plugin.h"
#include "qprintf.h"
@@ -84,6 +89,10 @@ static int parse_proc_stat(void)
if (age > 0 && age <= 10)
return 0;
+#ifndef __MAC_OS_X_VERSION_10_3
+
+ /* Linux Kernel, /proc-filesystem */
+
if (stream == NULL)
stream = fopen("/proc/stat", "r");
if (stream == NULL) {
@@ -214,6 +223,35 @@ static int parse_proc_stat(void)
hash_put1(buffer, beg);
}
}
+
+#else
+
+ /* MACH Kernel, MacOS X */
+
+ kern_return_t err;
+ mach_msg_type_number_t count;
+ host_info_t r_load;
+ host_cpu_load_info_data_t cpu_load;
+ char s_val[8];
+
+ r_load = &cpu_load;
+ count = HOST_CPU_LOAD_INFO_COUNT;
+ err = host_statistics(mach_host_self(), HOST_CPU_LOAD_INFO, r_load, &count);
+ if (KERN_SUCCESS != err) {
+ error("Error getting cpu load");
+ return -1;
+ }
+ snprintf(s_val, sizeof(s_val), "%d", cpu_load.cpu_ticks[CPU_STATE_USER]);
+ hash_put2("cpu", "user", s_val);
+ snprintf(s_val, sizeof(s_val), "%d", cpu_load.cpu_ticks[CPU_STATE_NICE]);
+ hash_put2("cpu", "nice", s_val);
+ snprintf(s_val, sizeof(s_val), "%d", cpu_load.cpu_ticks[CPU_STATE_SYSTEM]);
+ hash_put2("cpu", "system", s_val);
+ snprintf(s_val, sizeof(s_val), "%d", cpu_load.cpu_ticks[CPU_STATE_IDLE]);
+ hash_put2("cpu", "idle", s_val);
+
+#endif
+
return 0;
}