more cleanup of the cpu model name

This commit is contained in:
Doug MacEachern 2004-07-02 02:12:29 +00:00
parent f2c8a004c1
commit 060bf3b805
1 changed files with 48 additions and 1 deletions

View File

@ -261,10 +261,48 @@ double sigar_file_system_usage_calc_used(sigar_t *sigar,
#define IS_CPU_R(p) \ #define IS_CPU_R(p) \
((*p == '(') && (*(p+1) == 'R') && (*(p+2) == ')')) ((*p == '(') && (*(p+1) == 'R') && (*(p+2) == ')'))
typedef struct {
char *name; /* search */
int len;
char *rname; /* replace */
int rlen;
} cpu_model_str_t;
/* to later replace 's' with 'r' */
#define CPU_MODEL_ENT_R(s, r) \
{ s, sizeof(s)-1, r, sizeof(r) }
#define CPU_MODEL_ENT(s) \
CPU_MODEL_ENT_R(s, s)
/* after the vendor part of the string is removed,
* looking for startsWith the entries below
* to remove the crap after the model name, see
* ../exp/intel_amd_cpu_models.txt
*/
static const cpu_model_str_t cpu_models[] = {
/* intel */
CPU_MODEL_ENT("Xeon"),
CPU_MODEL_ENT_R("XEON", "Xeon"),
CPU_MODEL_ENT("Pentium II"),
CPU_MODEL_ENT("Pentium III"),
CPU_MODEL_ENT_R("Pentium(R) III", "Pentium III"),
CPU_MODEL_ENT_R("Pentium(R) 4", "Pentium 4"),
CPU_MODEL_ENT_R("Pentium(R) M", "Pentium M"),
CPU_MODEL_ENT("Pentium Pro"),
CPU_MODEL_ENT("Celeron"),
/* amd */
CPU_MODEL_ENT("Opteron"),
CPU_MODEL_ENT("Athlon"),
CPU_MODEL_ENT("Duron"),
{ NULL }
};
/* common to win32 and linux */ /* common to win32 and linux */
void sigar_cpu_model_adjust(sigar_t *sigar, sigar_cpu_info_t *info) void sigar_cpu_model_adjust(sigar_t *sigar, sigar_cpu_info_t *info)
{ {
int len; int len, i;
char model[128], *ptr=model, *end; char model[128], *ptr=model, *end;
memcpy(model, info->model, sizeof(model)); memcpy(model, info->model, sizeof(model));
@ -285,6 +323,15 @@ void sigar_cpu_model_adjust(sigar_t *sigar, sigar_cpu_info_t *info)
while (*ptr == ' ') ++ptr; while (*ptr == ' ') ++ptr;
} }
for (i=0; cpu_models[i].name; i++) {
const cpu_model_str_t *cpu_model = &cpu_models[i];
if (strnEQ(ptr, cpu_model->name, cpu_model->len)) {
memcpy(info->model, cpu_model->rname, cpu_model->rlen);
return;
}
}
strcpy(info->model, ptr); strcpy(info->model, ptr);
} }