/**************************************************************************** DESCRIPTION: Returns a string defining the speed and name of the processor. HEADER: ztimer.h RETURNS: Processor name string. REMARKS: This function returns an English string describing the speed and name of the CPU. SEE ALSO: CPU_getProcessorType, CPU_haveMMX, CPU_getProcessorName ****************************************************************************/ char * ZAPI CPU_getProcessorName(void) { #if defined(__INTEL__) static int cpu,speed = -1; static char name[80]; if (speed == -1) { cpu = CPU_getProcessorType(); speed = CPU_getProcessorSpeed(false); } sprintf(name,"%d MHz ", speed); switch (cpu & CPU_mask) { case CPU_i386: strcat(name,"Intel i386 processor"); break; case CPU_i486: strcat(name,"Intel i486 processor"); break; case CPU_Pentium: strcat(name,"Intel Pentium processor"); break; case CPU_PentiumPro: strcat(name,"Intel Pentium Pro processor"); break; case CPU_PentiumII: strcat(name,"Intel Pentium II processor"); break; case CPU_Celeron: strcat(name,"Intel Celeron processor"); break; case CPU_PentiumIII: strcat(name,"Intel Pentium III processor"); break; case CPU_UnkIntel: strcat(name,"Unknown Intel processor"); break; case CPU_Cyrix6x86: strcat(name,"Cyrix 6x86 processor"); break; case CPU_Cyrix6x86MX: strcat(name,"Cyrix 6x86MX processor"); break; case CPU_CyrixMediaGX: strcat(name,"Cyrix MediaGX processor"); break; case CPU_CyrixMediaGXm: strcat(name,"Cyrix MediaGXm processor"); break; case CPU_UnkCyrix: strcat(name,"Unknown Cyrix processor"); break; case CPU_AMDAm486: strcat(name,"AMD Am486 processor"); break; case CPU_AMDAm5x86: strcat(name,"AMD Am5x86 processor"); break; case CPU_AMDK5: strcat(name,"AMD K5 processor"); break; case CPU_AMDK6: strcat(name,"AMD K6 processor"); break; case CPU_AMDK6_2: strcat(name,"AMD K6-2 processor"); break; case CPU_AMDK6_III: strcat(name,"AMD K6-III processor"); break; case CPU_AMDK6_2plus: strcat(name,"AMD K6-2+ processor"); break; case CPU_AMDK6_IIIplus: strcat(name,"AMD K6-III+ processor"); break; case CPU_UnkAMD: strcat(name,"Unknown AMD processor"); break; case CPU_AMDAthlon: strcat(name,"AMD Athlon processor"); break; case CPU_AMDDuron: strcat(name,"AMD Duron processor"); break; case CPU_WinChipC6: strcat(name,"IDT WinChip C6 processor"); break; case CPU_WinChip2: strcat(name,"IDT WinChip 2 processor"); break; case CPU_UnkIDT: strcat(name,"Unknown IDT processor"); break; default: strcat(name,"Unknown processor"); } if (CPU_haveMMX()) strcat(name," with MMX(R)"); if (CPU_have3DNow()) strcat(name,", 3DNow!(R)"); if (CPU_haveSSE()) strcat(name,", SSE(R)"); return name; #else return "Unknown"; #endif }
/**************************************************************************** DESCRIPTION: Returns a string defining the speed and name of the processor. HEADER: cpuinfo.h RETURNS: Processor name string. REMARKS: This function returns an English string describing the speed and name of the CPU. SEE ALSO: CPU_getProcessorType, CPU_haveMMX, CPU_getProcessorName ****************************************************************************/ char * ZAPI CPU_getProcessorName(void) { #if defined(__INTEL__) static int cpu,speed = -1; static char name[80]; if (speed == -1) { cpu = CPU_getProcessorType(); speed = CPU_getProcessorSpeed(false); } if (speed >= 1000) sprintf(name,"%d.%d GHz ", speed / 1000,((speed + 50) / 100) % 10); else sprintf(name,"%d MHz ", speed); switch (cpu & CPU_mask) { case CPU_i386: strcat(name,"Intel i386 processor"); break; case CPU_i486: strcat(name,"Intel i486 processor"); break; case CPU_Pentium: strcat(name,"Intel Pentium processor"); break; case CPU_PentiumPro: strcat(name,"Intel Pentium Pro processor"); break; case CPU_PentiumII: strcat(name,"Intel Pentium II processor"); break; case CPU_Celeron: strcat(name,"Intel Celeron processor"); break; case CPU_PentiumIII: strcat(name,"Intel Pentium III processor"); break; case CPU_Pentium4: strcat(name,"Intel Pentium 4 processor"); break; case CPU_UnkIntel: strcat(name,"Unknown Intel processor"); break; case CPU_UnkX86: strcat(name,"Unknown x86 processor"); break; case CPU_Cyrix6x86: strcat(name,"Cyrix 6x86 processor"); break; case CPU_Cyrix6x86MX: strcat(name,"Cyrix 6x86MX processor"); break; case CPU_CyrixMediaGX: strcat(name,"Cyrix MediaGX processor"); break; case CPU_CyrixMediaGXm: strcat(name,"Cyrix MediaGXm processor"); break; case CPU_UnkCyrix: strcat(name,"Unknown Cyrix processor"); break; case CPU_AMDAm486: strcat(name,"AMD Am486 processor"); break; case CPU_AMDAm5x86: strcat(name,"AMD Am5x86 processor"); break; case CPU_AMDK5: strcat(name,"AMD K5 processor"); break; case CPU_AMDK6: strcat(name,"AMD K6 processor"); break; case CPU_AMDK6_2: strcat(name,"AMD K6-2 processor"); break; case CPU_AMDK6_III: strcat(name,"AMD K6-III processor"); break; case CPU_AMDK6_2plus: strcat(name,"AMD K6-2+ processor"); break; case CPU_AMDK6_IIIplus: strcat(name,"AMD K6-III+ processor"); break; case CPU_UnkAMD: strcat(name,"Unknown AMD processor"); break; case CPU_AMDAthlon: strcat(name,"AMD Athlon processor"); break; case CPU_AMDDuron: strcat(name,"AMD Duron processor"); break; case CPU_AMDOpteron: strcat(name,"AMD Opteron processor"); break; case CPU_WinChipC6: strcat(name,"IDT WinChip C6 processor"); break; case CPU_WinChip2: strcat(name,"IDT WinChip 2 processor"); break; case CPU_UnkIDT: strcat(name,"Unknown IDT processor"); break; case CPU_ViaCyrixIII: strcat(name,"VIA CyrixIII processor"); break; case CPU_ViaEden: strcat(name,"VIA Eden ESP processor"); break; case CPU_UnkVIA: strcat(name,"Unknown VIA processor"); break; case CPU_GeodeGX1: strcat(name,"Geode GX1 processor"); break; case CPU_GeodeGX2: strcat(name,"Geode GX2 processor"); break; case CPU_UnkGeode: strcat(name,"Unknown Geode processor"); break; default: strcat(name,"Unknown processor"); } if (CPU_haveMMX()) strcat(name," with MMX(R)"); if (CPU_have3DNow()) strcat(name,", 3DNow!(R)"); if (CPU_haveSSE()) strcat(name,", SSE(R)"); if (CPU_haveSSE2()) strcat(name,", SSE2(R)"); return name; #elif defined(__LINUX__) return _CPU_getProcessorName(); #else return "Unknown"; #endif }