diff -urN nbench-byte-2.2.2.orig/Makefile nbench-byte-2.2.2/Makefile --- nbench-byte-2.2.2.orig/Makefile 2004-12-29 21:23:30.000000000 -0500 +++ nbench-byte-2.2.2/Makefile 2006-09-05 10:46:17.000000000 -0400 @@ -141,7 +141,7 @@ nbench: emfloat.o misc.o nbench0.o nbench1.o sysspec.o hardware.o $(CC) $(MACHINE) $(DEFINES) $(CFLAGS) $(LINKFLAGS)\ emfloat.o misc.o nbench0.o nbench1.o sysspec.o hardware.o\ - -o nbench -lm + -o nbench -lm -lproccpuinfo ########################################################################## diff -urN nbench-byte-2.2.2.orig/hardware.c nbench-byte-2.2.2/hardware.c --- nbench-byte-2.2.2.orig/hardware.c 2003-06-09 16:45:12.000000000 -0400 +++ nbench-byte-2.2.2/hardware.c 2006-09-05 11:02:21.000000000 -0400 @@ -2,6 +2,8 @@ #include #include +#include + #define BUF_SIZ 1024 /****************** @@ -64,94 +66,25 @@ ** The pointers must point to pre-allocated arrays of at least BUF_SIZ */ static void readProcCpuInfo (char *model, char *cache) { - FILE * info; - char * cp; - int cpus = 0; - char * buffer_end; - char buffer[BUF_SIZ]; - char vendor_id[BUF_SIZ]; - char model_name[BUF_SIZ]; - char cpu_MHz[BUF_SIZ]; - int i; - float f; - - vendor_id[0] = model_name[0] = cpu_MHz[0] = model[0] = cache[0] = '\0'; - info = fopen("/proc/cpuinfo", "r"); - if(info != NULL) { - /* command did not fail */ - while(NULL != fgets(buffer, BUF_SIZ, info)){ - buffer_end = buffer + strlen(buffer); - cp = buffer; - if(! strncmp(buffer, "processor", 9)) { - cpus++; - } else if(! strncmp(buffer, "vendor_id", 9)) { - cp+=strlen("vendor_id"); - while(cp < buffer_end && ( *cp == ' ' || *cp == ':'|| *cp == '\t')) - cp++; - if(cp1) { - if (cpus==2) { - strcpy(model, "Dual"); - } else { - sprintf(model, "%d CPU", cpus); - } - } - cp = model + strlen(model); - if(vendor_id[0] != '\0'){ - if(cp != model){ - *cp++ = ' '; - } - strcpy(cp, vendor_id); - cp += strlen(vendor_id); - } - if(model_name[0] != '\0'){ - if(cp != model){ - *cp++ = ' '; - } - strcpy(cp, model_name); - cp += strlen(model_name); - } - if(cpu_MHz[0] != '\0'){ - if(cp != model){ - *cp++ = ' '; - } - f = atof(cpu_MHz); - i = (int)(f+0.5f); - sprintf(cpu_MHz, "%dMHz", i); - strcpy(cp, cpu_MHz); - cp += strlen(cpu_MHz); - } - fclose(info); + proccpuinfo *info = proccpuinfo_read(); + + if (!info) + return; + + switch (info->cpus) { + case 1: + snprintf(model,BUF_SIZ,"%s %s %.0lfMHz",info->hardware_platform,info->architecture,info->frequency); + break; + case 2: + snprintf(model,BUF_SIZ,"Dual %s %s %lfMHz",info->hardware_platform,info->architecture,info->frequency); + break; + default: + snprintf(model,BUF_SIZ,"%d CPU %s %s %lfMHz",info->cpus,info->hardware_platform,info->architecture,info->frequency); + break; } + + snprintf(cache,BUF_SIZ,"%d KB", info->cache); + proccpuinfo_free(info); }