aboutsummaryrefslogtreecommitdiffstats
path: root/com32/hdt/hdt-menu-processor.c
diff options
context:
space:
mode:
Diffstat (limited to 'com32/hdt/hdt-menu-processor.c')
-rw-r--r--com32/hdt/hdt-menu-processor.c186
1 files changed, 186 insertions, 0 deletions
diff --git a/com32/hdt/hdt-menu-processor.c b/com32/hdt/hdt-menu-processor.c
new file mode 100644
index 00000000..49137715
--- /dev/null
+++ b/com32/hdt/hdt-menu-processor.c
@@ -0,0 +1,186 @@
+/* ----------------------------------------------------------------------- *
+ *
+ * Copyright 2009 Erwan Velu - All Rights Reserved
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation
+ * files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use,
+ * copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom
+ * the Software is furnished to do so, subject to the following
+ * conditions:
+ *
+ * The above copyright notice and this permission notice shall
+ * be included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * -----------------------------------------------------------------------
+*/
+
+#include "hdt-menu.h"
+
+/* Compute Processor menu */
+void compute_processor(struct s_my_menu *menu,s_cpu *cpu, s_dmi *dmi) {
+ char buffer[SUBMENULEN+1];
+ char buffer1[SUBMENULEN+1];
+ char statbuffer[STATLEN+1];
+
+ menu->menu = add_menu(" Main Processor ",-1);
+ menu->items_count=0;
+ set_menu_pos(SUBMENU_Y,SUBMENU_X);
+
+ snprintf(buffer,sizeof buffer,"Vendor : %s",cpu->vendor);
+ snprintf(statbuffer,sizeof statbuffer,"Vendor: %s",cpu->vendor);
+ add_item(buffer,statbuffer,OPT_INACTIVE,NULL,0);
+ menu->items_count++;
+
+ snprintf(buffer,sizeof buffer,"Model : %s",cpu->model);
+ snprintf(statbuffer,sizeof statbuffer,"Model: %s",cpu->model);
+ add_item(buffer,statbuffer,OPT_INACTIVE,NULL,0);
+ menu->items_count++;
+
+ snprintf(buffer,sizeof buffer,"Vendor ID : %d",cpu->vendor_id);
+ snprintf(statbuffer,sizeof statbuffer,"Vendor ID: %d",cpu->vendor_id);
+ add_item(buffer,statbuffer,OPT_INACTIVE,NULL,0);
+ menu->items_count++;
+
+ snprintf(buffer,sizeof buffer,"Family ID : %d",cpu->family);
+ snprintf(statbuffer,sizeof statbuffer,"Family ID: %d",cpu->family);
+ add_item(buffer,statbuffer,OPT_INACTIVE,NULL,0);
+ menu->items_count++;
+
+ snprintf(buffer,sizeof buffer,"Model ID : %d",cpu->model_id);
+ snprintf(statbuffer,sizeof statbuffer,"Model ID: %d",cpu->model_id);
+ add_item(buffer,statbuffer,OPT_INACTIVE,NULL,0);
+ menu->items_count++;
+
+ snprintf(buffer,sizeof buffer,"Stepping : %d",cpu->stepping);
+ snprintf(statbuffer,sizeof statbuffer,"Stepping: %d",cpu->stepping);
+ add_item(buffer,statbuffer,OPT_INACTIVE,NULL,0);
+ menu->items_count++;
+
+ if (is_dmi_valid) {
+ snprintf(buffer,sizeof buffer,"FSB : %d",dmi->processor.external_clock);
+ snprintf(statbuffer,sizeof statbuffer,"Front Side Bus (MHz): %d",dmi->processor.external_clock);
+ add_item(buffer,statbuffer,OPT_INACTIVE,NULL,0);
+ menu->items_count++;
+
+ snprintf(buffer,sizeof buffer,"Cur. Speed: %d",dmi->processor.current_speed);
+ snprintf(statbuffer,sizeof statbuffer,"Current Speed (MHz): %d",dmi->processor.current_speed);
+ add_item(buffer,statbuffer,OPT_INACTIVE,NULL,0);
+ menu->items_count++;
+
+ snprintf(buffer,sizeof buffer,"Max Speed : %d",dmi->processor.max_speed);
+ snprintf(statbuffer,sizeof statbuffer,"Max Speed (MHz): %d",dmi->processor.max_speed);
+ add_item(buffer,statbuffer,OPT_INACTIVE,NULL,0);
+ menu->items_count++;
+
+ snprintf(buffer,sizeof buffer,"Upgrade : %s",dmi->processor.upgrade);
+ snprintf(statbuffer,sizeof statbuffer,"Upgrade: %s",dmi->processor.upgrade);
+ add_item(buffer,statbuffer,OPT_INACTIVE,NULL,0);
+ menu->items_count++;
+ }
+
+ if (cpu->flags.smp) {
+ snprintf(buffer,sizeof buffer,"SMP : Yes");
+ snprintf(statbuffer,sizeof statbuffer,"SMP: Yes");
+ }
+ else {
+ snprintf(buffer,sizeof buffer,"SMP : No");
+ snprintf(statbuffer,sizeof statbuffer,"SMP: No");
+ }
+ add_item(buffer,statbuffer,OPT_INACTIVE,NULL,0);
+ menu->items_count++;
+
+ if (cpu->flags.lm) {
+ snprintf(buffer,sizeof buffer,"x86_64 : Yes");
+ snprintf(statbuffer,sizeof statbuffer,"x86_64 compatible processor: Yes");
+ }
+ else {
+ snprintf(buffer,sizeof buffer,"X86_64 : No");
+ snprintf(statbuffer,sizeof statbuffer,"X86_64 compatible processor: No");
+ }
+ add_item(buffer,statbuffer,OPT_INACTIVE,NULL,0);
+ menu->items_count++;
+
+ buffer1[0]='\0';
+ if (cpu->flags.fpu) strcat(buffer1,"fpu ");
+ if (cpu->flags.vme) strcat(buffer1,"vme ");
+ if (cpu->flags.de) strcat(buffer1,"de ");
+ if (cpu->flags.pse) strcat(buffer1,"pse ");
+ if (cpu->flags.tsc) strcat(buffer1,"tsc ");
+ if (cpu->flags.msr) strcat(buffer1,"msr ");
+ if (cpu->flags.pae) strcat(buffer1,"pae ");
+ snprintf(buffer,sizeof buffer,"Flags : %s",buffer1);
+ snprintf(statbuffer,sizeof statbuffer,"Flags: %s",buffer1);
+ add_item(buffer,statbuffer,OPT_INACTIVE,NULL,0);
+ menu->items_count++;
+
+ buffer1[0]='\0';
+ if (cpu->flags.mce) strcat(buffer1,"mce ");
+ if (cpu->flags.cx8) strcat(buffer1,"cx8 ");
+ if (cpu->flags.apic) strcat(buffer1,"apic ");
+ if (cpu->flags.sep) strcat(buffer1,"sep ");
+ if (cpu->flags.mtrr) strcat(buffer1,"mtrr ");
+ if (cpu->flags.pge) strcat(buffer1,"pge ");
+ if (cpu->flags.mca) strcat(buffer1,"mca ");
+ snprintf(buffer,sizeof buffer,"Flags : %s",buffer1);
+ snprintf(statbuffer,sizeof statbuffer,"Flags: %s",buffer1);
+ add_item(buffer,statbuffer,OPT_INACTIVE,NULL,0);
+ menu->items_count++;
+
+ buffer1[0]='\0';
+ if (cpu->flags.cmov) strcat(buffer1,"cmov ");
+ if (cpu->flags.pat) strcat(buffer1,"pat ");
+ if (cpu->flags.pse_36) strcat(buffer1,"pse_36 ");
+ if (cpu->flags.psn) strcat(buffer1,"psn ");
+ if (cpu->flags.clflsh) strcat(buffer1,"clflsh ");
+ snprintf(buffer,sizeof buffer,"Flags : %s",buffer1);
+ snprintf(statbuffer,sizeof statbuffer,"Flags: %s",buffer1);
+ add_item(buffer,statbuffer,OPT_INACTIVE,NULL,0);
+ menu->items_count++;
+
+ buffer1[0]='\0';
+ if (cpu->flags.dts) strcat(buffer1,"dts ");
+ if (cpu->flags.acpi) strcat(buffer1,"acpi ");
+ if (cpu->flags.mmx) strcat(buffer1,"mmx ");
+ if (cpu->flags.sse) strcat(buffer1,"sse ");
+ snprintf(buffer,sizeof buffer,"Flags : %s",buffer1);
+ snprintf(statbuffer,sizeof statbuffer,"Flags: %s",buffer1);
+ add_item(buffer,statbuffer,OPT_INACTIVE,NULL,0);
+ menu->items_count++;
+
+ buffer1[0]='\0';
+ if (cpu->flags.sse2) strcat(buffer1,"sse2 ");
+ if (cpu->flags.ss) strcat(buffer1,"ss ");
+ if (cpu->flags.htt) strcat(buffer1,"ht ");
+ if (cpu->flags.acc) strcat(buffer1,"acc ");
+ if (cpu->flags.syscall) strcat(buffer1,"syscall ");
+ if (cpu->flags.mp) strcat(buffer1,"mp ");
+ snprintf(buffer,sizeof buffer,"Flags : %s",buffer1);
+ snprintf(statbuffer,sizeof statbuffer,"Flags: %s",buffer1);
+ add_item(buffer,statbuffer,OPT_INACTIVE,NULL,0);
+ menu->items_count++;
+
+ buffer1[0]='\0';
+ if (cpu->flags.nx) strcat(buffer1,"nx ");
+ if (cpu->flags.mmxext) strcat(buffer1,"mmxext ");
+ if (cpu->flags.lm) strcat(buffer1,"lm ");
+ if (cpu->flags.nowext) strcat(buffer1,"3dnowext ");
+ if (cpu->flags.now) strcat(buffer1,"3dnow! ");
+ snprintf(buffer,sizeof buffer,"Flags : %s",buffer1);
+ snprintf(statbuffer,sizeof statbuffer,"Flags: %s",buffer1);
+ add_item(buffer,statbuffer,OPT_INACTIVE,NULL,0);
+ menu->items_count++;
+
+ printf("MENU: Processor menu done (%d items)\n",menu->items_count);
+}