static mach_port_t port_host;
static processor_port_array_t cpu_list;
static mach_msg_type_number_t cpu_list_len;
-
-#if PROCESSOR_TEMPERATURE
-static int cpu_temp_retry_counter = 0;
-static int cpu_temp_retry_step = 1;
-static int cpu_temp_retry_max = 1;
-#endif /* PROCESSOR_TEMPERATURE */
/* #endif PROCESSOR_CPU_LOAD_INFO */
#elif defined(KERNEL_LINUX)
static int init (void)
{
-#if PROCESSOR_CPU_LOAD_INFO || PROCESSOR_TEMPERATURE
+#if PROCESSOR_CPU_LOAD_INFO
kern_return_t status;
port_host = mach_host_self ();
/* Legacy behavior: Dispatches the raw derive values without any aggregation. */
static void cpu_commit_without_aggregation (void) /* {{{ */
{
- size_t cpu_num;
+ int state;
- for (cpu_num = 0; cpu_num < global_cpu_num; cpu_num++)
+ for (state = 0; state < CPU_STATE_ACTIVE; state++)
{
- int state;
+ size_t cpu_num;
+ if (report_by_cpu) {
+ for (cpu_num = 0; cpu_num < global_cpu_num; cpu_num++)
+ {
+ cpu_state_t *s = get_cpu_state (cpu_num, state);
- for (state = 0; state < CPU_STATE_ACTIVE; state++)
- {
- cpu_state_t *s = get_cpu_state (cpu_num, state);
-
- if (!s->has_value)
- continue;
+ if (!s->has_value)
+ continue;
- submit_derive ((int) cpu_num, (int) state, s->conv.last_value.derive);
+ submit_derive ((int) cpu_num, (int) state, s->conv.last_value.derive);
+ }
+ } else {
+ derive_t derive_total = 0;
+ for (cpu_num = 0; cpu_num < global_cpu_num; cpu_num++)
+ {
+ cpu_state_t *s = get_cpu_state (cpu_num, state);
+
+ if (!s->has_value)
+ continue;
+
+ derive_total += s->conv.last_value.derive;
+
+ }
+ submit_derive (-1, (int) state, derive_total);
}
}
} /* }}} void cpu_commit_without_aggregation */
};
size_t cpu_num;
- if (report_by_cpu && report_by_state && !report_percent)
+ if (report_by_state && !report_percent)
{
cpu_commit_without_aggregation ();
return;
{
cdtime_t now = cdtime ();
-#if PROCESSOR_CPU_LOAD_INFO || PROCESSOR_TEMPERATURE /* {{{ */
+#if PROCESSOR_CPU_LOAD_INFO /* {{{ */
int cpu;
kern_return_t status;
-#if PROCESSOR_CPU_LOAD_INFO
processor_cpu_load_info_data_t cpu_info;
mach_msg_type_number_t cpu_info_len;
-#endif
-#if PROCESSOR_TEMPERATURE
- processor_info_data_t cpu_temp;
- mach_msg_type_number_t cpu_temp_len;
-#endif
host_t cpu_host;
for (cpu = 0; cpu < cpu_list_len; cpu++)
{
-#if PROCESSOR_CPU_LOAD_INFO
cpu_host = 0;
cpu_info_len = PROCESSOR_BASIC_INFO_COUNT;
- if ((status = processor_info (cpu_list[cpu],
- PROCESSOR_CPU_LOAD_INFO, &cpu_host,
- (processor_info_t) &cpu_info, &cpu_info_len)) != KERN_SUCCESS)
+ status = processor_info (cpu_list[cpu], PROCESSOR_CPU_LOAD_INFO, &cpu_host,
+ (processor_info_t) &cpu_info, &cpu_info_len);
+ if (status != KERN_SUCCESS)
{
- ERROR ("cpu plugin: processor_info failed with status %i", (int) status);
+ ERROR ("cpu plugin: processor_info (PROCESSOR_CPU_LOAD_INFO) failed: %s",
+ mach_error_string (status));
continue;
}
cpu_stage (cpu, CPU_STATE_NICE, (derive_t) cpu_info.cpu_ticks[CPU_STATE_NICE], now);
cpu_stage (cpu, CPU_STATE_SYSTEM, (derive_t) cpu_info.cpu_ticks[CPU_STATE_SYSTEM], now);
cpu_stage (cpu, CPU_STATE_IDLE, (derive_t) cpu_info.cpu_ticks[CPU_STATE_IDLE], now);
-#endif /* PROCESSOR_CPU_LOAD_INFO */
-
-#if PROCESSOR_TEMPERATURE
- /*
- * Not all Apple computers do have this ability. To minimize
- * the messages sent to the syslog we do an exponential
- * stepback if `processor_info' fails. We still try ~once a day
- * though..
- */
- if (cpu_temp_retry_counter > 0)
- {
- cpu_temp_retry_counter--;
- continue;
- }
-
- cpu_temp_len = PROCESSOR_INFO_MAX;
-
- status = processor_info (cpu_list[cpu],
- PROCESSOR_TEMPERATURE,
- &cpu_host,
- cpu_temp, &cpu_temp_len);
- if (status != KERN_SUCCESS)
- {
- ERROR ("cpu plugin: processor_info failed: %s",
- mach_error_string (status));
-
- cpu_temp_retry_counter = cpu_temp_retry_step;
- cpu_temp_retry_step *= 2;
- if (cpu_temp_retry_step > cpu_temp_retry_max)
- cpu_temp_retry_step = cpu_temp_retry_max;
-
- continue;
- }
-
- if (cpu_temp_len != 1)
- {
- DEBUG ("processor_info (PROCESSOR_TEMPERATURE) returned %i elements..?",
- (int) cpu_temp_len);
- continue;
- }
-
- cpu_temp_retry_counter = 0;
- cpu_temp_retry_step = 1;
-#endif /* PROCESSOR_TEMPERATURE */
}
/* }}} #endif PROCESSOR_CPU_LOAD_INFO */