make get_cpu_model reuseable and use for sys_info.machine
This commit is contained in:
parent
f5e87e752e
commit
35ed4a62fb
|
@ -1870,27 +1870,83 @@ static char *get_cpu_arch(void)
|
|||
return "Power Classic";
|
||||
case POWER_PC:
|
||||
return "PowerPC";
|
||||
break;
|
||||
case IA64:
|
||||
return "IA64";
|
||||
break;
|
||||
default:
|
||||
return "PowerPC"; /* what else could it be */
|
||||
}
|
||||
}
|
||||
|
||||
static char *get_ppc_cpu_model(void)
|
||||
{
|
||||
switch (_system_configuration.implementation) {
|
||||
case POWER_RS1:
|
||||
return "RS1";
|
||||
case POWER_RSC:
|
||||
return "RSC";
|
||||
case POWER_RS2:
|
||||
return "RS2";
|
||||
case POWER_601:
|
||||
return "601";
|
||||
case POWER_603:
|
||||
return "603";
|
||||
case POWER_604:
|
||||
return "604";
|
||||
case POWER_620:
|
||||
return "620";
|
||||
case POWER_630:
|
||||
return "630";
|
||||
case POWER_A35:
|
||||
return "A35";
|
||||
case POWER_RS64II:
|
||||
return "RS64-II";
|
||||
case POWER_RS64III:
|
||||
return "RS64-III";
|
||||
case POWER_4:
|
||||
return "POWER4";
|
||||
case POWER_MPC7450:
|
||||
return "MPC7450";
|
||||
case POWER_5:
|
||||
return "POWER5";
|
||||
default:
|
||||
return "Unknown";
|
||||
}
|
||||
}
|
||||
|
||||
static char *get_ia64_cpu_model(void)
|
||||
{
|
||||
switch (_system_configuration.implementation) {
|
||||
case IA64_M1:
|
||||
return "M1";
|
||||
case IA64_M2:
|
||||
return "M2";
|
||||
default:
|
||||
return "Unknown";
|
||||
}
|
||||
}
|
||||
|
||||
static char *get_cpu_model(void)
|
||||
{
|
||||
if (_system_configuration.architecture == IA64) {
|
||||
return get_ia64_cpu_model();
|
||||
}
|
||||
else {
|
||||
return get_ppc_cpu_model();
|
||||
}
|
||||
}
|
||||
|
||||
int sigar_cpu_info_list_get(sigar_t *sigar,
|
||||
sigar_cpu_info_list_t *cpu_infos)
|
||||
{
|
||||
int i;
|
||||
int ncpu = _system_configuration.ncpus; /* this can change */
|
||||
char *arch = get_cpu_arch(), *model = get_cpu_model();
|
||||
|
||||
/*XXX should only do this once*/
|
||||
sigar_cpu_info_list_create(cpu_infos);
|
||||
|
||||
for (i=0; i<ncpu; i++) {
|
||||
sigar_cpu_info_t *info;
|
||||
char *arch, *model=NULL;
|
||||
|
||||
SIGAR_CPU_INFO_LIST_GROW(cpu_infos);
|
||||
|
||||
|
@ -1900,85 +1956,19 @@ int sigar_cpu_info_list_get(sigar_t *sigar,
|
|||
|
||||
info->mhz = sigar_get_cpu_mhz(sigar);
|
||||
|
||||
arch = get_cpu_arch();
|
||||
|
||||
if (*arch == 'P') {
|
||||
SIGAR_SSTRCPY(info->vendor, "IBM");
|
||||
|
||||
switch (_system_configuration.implementation) {
|
||||
case POWER_RS1:
|
||||
model = "RS1";
|
||||
break;
|
||||
case POWER_RSC:
|
||||
model = "RSC";
|
||||
break;
|
||||
case POWER_RS2:
|
||||
model = "RS2";
|
||||
break;
|
||||
case POWER_601:
|
||||
model = "601";
|
||||
break;
|
||||
case POWER_603:
|
||||
model = "603";
|
||||
break;
|
||||
case POWER_604:
|
||||
model = "604";
|
||||
break;
|
||||
case POWER_620:
|
||||
model = "620";
|
||||
break;
|
||||
case POWER_630:
|
||||
model = "630";
|
||||
break;
|
||||
case POWER_A35:
|
||||
model = "A35";
|
||||
break;
|
||||
case POWER_RS64II:
|
||||
model = "RS64-II";
|
||||
break;
|
||||
case POWER_RS64III:
|
||||
model = "RS64-III";
|
||||
break;
|
||||
case POWER_4:
|
||||
model = "POWER4";
|
||||
break;
|
||||
case POWER_MPC7450:
|
||||
model = "MPC7450";
|
||||
break;
|
||||
case POWER_5:
|
||||
model = "POWER5";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if (*arch == 'I') {
|
||||
SIGAR_SSTRCPY(info->vendor, "Intel");
|
||||
|
||||
switch (_system_configuration.implementation) {
|
||||
case IA64_M1:
|
||||
model = "M1";
|
||||
break;
|
||||
case IA64_M2:
|
||||
model = "M2";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
else {
|
||||
SIGAR_SSTRCPY(info->vendor, "IBM");
|
||||
break;
|
||||
SIGAR_SSTRCPY(info->vendor, "Unknown");
|
||||
}
|
||||
|
||||
if (model) {
|
||||
snprintf(info->model, sizeof(info->model),
|
||||
"%s %s", arch, model);
|
||||
}
|
||||
else {
|
||||
SIGAR_SSTRCPY(info->model, arch);
|
||||
}
|
||||
}
|
||||
|
||||
return SIGAR_OK;
|
||||
}
|
||||
|
@ -2364,6 +2354,10 @@ int sigar_os_sys_info_get(sigar_t *sigar,
|
|||
|
||||
SIGAR_SSTRCPY(sysinfo->vendor, "IBM");
|
||||
SIGAR_SSTRCPY(sysinfo->arch, get_cpu_arch());
|
||||
/* utsname.machine is a sequence number */
|
||||
/* XXX odm might have something better */
|
||||
sprintf(sysinfo->machine, "%s %s",
|
||||
sysinfo->arch, get_cpu_model());
|
||||
|
||||
sprintf(sysinfo->version, "%s.%s",
|
||||
name.version, name.release);
|
||||
|
|
Loading…
Reference in New Issue