summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--includes/alpha/processor-platform.h1
-rw-r--r--modules/devices/alpha/processor.c12
-rw-r--r--test/data/alpha_as_cpuinfo19
-rw-r--r--test/test.sh2
4 files changed, 33 insertions, 1 deletions
diff --git a/includes/alpha/processor-platform.h b/includes/alpha/processor-platform.h
index 2ff3a728..778a1a88 100644
--- a/includes/alpha/processor-platform.h
+++ b/includes/alpha/processor-platform.h
@@ -23,6 +23,7 @@ struct _Processor {
gchar *model_name;
gfloat bogomips, cpu_mhz;
gchar *strmodel;
+ gchar *cycle_frequency_hz_str;
};
#endif /* __PROCESSOR_PLATFORM_H__ */
diff --git a/modules/devices/alpha/processor.c b/modules/devices/alpha/processor.c
index ae58058f..79852017 100644
--- a/modules/devices/alpha/processor.c
+++ b/modules/devices/alpha/processor.c
@@ -37,6 +37,7 @@ processor_scan(void)
Processor *processor;
FILE *cpuinfo;
gchar buffer[128];
+ long long hz = 0;
cpuinfo = fopen(PROC_CPUINFO, "r");
if (!cpuinfo)
@@ -53,6 +54,7 @@ processor_scan(void)
get_str("cpu model", processor->model_name);
get_float("BogoMIPS", processor->bogomips);
get_str("platform string", processor->strmodel);
+ get_str("cycle frequency [Hz]", processor->cycle_frequency_hz_str);
}
g_strfreev(tmp);
@@ -61,7 +63,13 @@ processor_scan(void)
gchar *tmp = g_strconcat("Alpha ", processor->model_name, NULL);
g_free(processor->model_name);
processor->model_name = tmp;
- processor->cpu_mhz = 0.0f;
+
+ if (processor->cycle_frequency_hz_str) {
+ hz = atoll(processor->cycle_frequency_hz_str);
+ processor->cpu_mhz = hz;
+ processor->cpu_mhz /= 1000000;
+ } else
+ processor->cpu_mhz = 0.0f;
fclose(cpuinfo);
@@ -76,11 +84,13 @@ processor_get_info(GSList *processors)
return g_strdup_printf("[%s]\n"
"%s=%s\n"
"%s=%s\n"
+ "%s=%.2f %s\n" /* frequency */
"%s=%.2f\n" /* bogomips */
"%s=%s\n", /* byte order */
_("Processor"),
_("Model"), processor->model_name,
_("Platform String"), processor->strmodel,
+ _("Frequency"), processor->cpu_mhz, _("MHz"),
_("BogoMips"), processor->bogomips,
_("Byte Order"), byte_order_str()
);
diff --git a/test/data/alpha_as_cpuinfo b/test/data/alpha_as_cpuinfo
new file mode 100644
index 00000000..698b3d4d
--- /dev/null
+++ b/test/data/alpha_as_cpuinfo
@@ -0,0 +1,19 @@
+cpu : Alpha
+cpu model : EV56
+cpu variation : 7
+cpu revision : 0
+cpu serial number :
+system type : Rawhide
+system variation : Tincup
+system revision : 0
+system serial number : BT00000000
+cycle frequency [Hz] : 531914893
+timer frequency [Hz] : 1200.00
+page size [bytes] : 8192
+phys. address bits : 40
+max. addr. space # : 127
+BogoMIPS : 1063.92
+kernel unaligned acc : 0 (pc=0,va=0)
+user unaligned acc : 0 (pc=0,va=0)
+platform string : AlphaServer 1200 5/533 4MB
+cpus detected : 1
diff --git a/test/test.sh b/test/test.sh
index 7a05a79b..bc748320 100644
--- a/test/test.sh
+++ b/test/test.sh
@@ -16,3 +16,5 @@ do_test() {
#do_test arm data/arm_jetsontx2_cpuinfo
#do_test sparc data/sparc_m7_cpuinfo
#do_test mips data/mips_loongson_cpuinfo
+do_test alpha data/alpha_as_cpuinfo
+