diff options
Diffstat (limited to 'modules/devices/x86/processor.c')
-rw-r--r-- | modules/devices/x86/processor.c | 60 |
1 files changed, 38 insertions, 22 deletions
diff --git a/modules/devices/x86/processor.c b/modules/devices/x86/processor.c index 4e0363d4..559fe070 100644 --- a/modules/devices/x86/processor.c +++ b/modules/devices/x86/processor.c @@ -752,13 +752,44 @@ gchar *processor_get_capabilities_from_flags(gchar * strflags) gchar *processor_get_detailed_info(Processor * processor) { - gchar *tmp_flags, *tmp_bugs, *tmp_pm, *ret, *cache_info; + gchar *tmp_flags, *tmp_bugs, *tmp_pm, *tmp_cpufreq, *tmp_topology, *ret, *cache_info; tmp_flags = processor_get_capabilities_from_flags(processor->flags); tmp_bugs = processor_get_capabilities_from_flags(processor->bugs); tmp_pm = processor_get_capabilities_from_flags(processor->pm); cache_info = __cache_get_info_as_string(processor); + tmp_topology = g_strdup_printf( + "[Topology]\n" + "ID=%d\n" + "Socket=%s\n" + "Core=%s\n", + processor->id, + processor->package_id, + processor->core_id); + + if (processor->cpukhz_min || processor->cpukhz_max || processor->cpukhz_cur) { + tmp_cpufreq = g_strdup_printf( + "[Frequency Scaling]\n" + "Minimum=%d kHz\n" + "Maximum=%d kHz\n" + "Current=%d kHz\n" + "Transition Latency=%d ns\n" + "Governor=%s\n" + "Driver=%s\n", + processor->cpukhz_min, + processor->cpukhz_max, + processor->cpukhz_cur, + processor->transition_latency, + processor->scaling_governor, + processor->scaling_driver); + } else { + tmp_cpufreq = g_strdup_printf( + "[Frequency Scaling]\n" + "Driver=%s\n", + processor->scaling_driver); + } + ret = g_strdup_printf(_("[Processor]\n" "Name=%s\n" "Family, model, stepping=%d, %d, %d (%s)\n" @@ -768,17 +799,8 @@ gchar *processor_get_detailed_info(Processor * processor) "Frequency=%.2fMHz\n" "BogoMIPS=%.2f\n" "Byte Order=%s\n" - "[Topology]\n" - "ID=%d\n" - "Socket=%s\n" - "Core=%s\n" - "[Frequency Scaling]\n" - "Minimum=%d kHz\n" - "Maximum=%d kHz\n" - "Current=%d kHz\n" - "Transition Latency=%d ns\n" - "Governor=%s\n" - "Driver=%s\n" + "%s" /* topology */ + "%s" /* frequency scaling */ "[Features]\n" "Has FPU=%s\n" "[Cache]\n" @@ -802,15 +824,8 @@ gchar *processor_get_detailed_info(Processor * processor) #else "Big Endian", #endif - processor->id, - processor->package_id, - processor->core_id, - processor->cpukhz_min, - processor->cpukhz_max, - processor->cpukhz_cur, - processor->transition_latency, - processor->scaling_governor, - processor->scaling_driver, + tmp_topology, + tmp_cpufreq, processor->has_fpu ? processor->has_fpu : "no", cache_info, tmp_pm, tmp_bugs, tmp_flags); @@ -818,7 +833,8 @@ gchar *processor_get_detailed_info(Processor * processor) g_free(tmp_bugs); g_free(tmp_pm); g_free(cache_info); - + g_free(tmp_cpufreq); + g_free(tmp_topology); return ret; } |