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";
 | 
					            return "Power Classic";
 | 
				
			||||||
        case POWER_PC:
 | 
					        case POWER_PC:
 | 
				
			||||||
            return "PowerPC";
 | 
					            return "PowerPC";
 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
        case IA64:
 | 
					        case IA64:
 | 
				
			||||||
            return "IA64";
 | 
					            return "IA64";
 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
        default:
 | 
					        default:
 | 
				
			||||||
            return "PowerPC"; /* what else could it be */
 | 
					            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,
 | 
					int sigar_cpu_info_list_get(sigar_t *sigar,
 | 
				
			||||||
                            sigar_cpu_info_list_t *cpu_infos)
 | 
					                            sigar_cpu_info_list_t *cpu_infos)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    int i;
 | 
					    int i;
 | 
				
			||||||
    int ncpu = _system_configuration.ncpus; /* this can change */
 | 
					    int ncpu = _system_configuration.ncpus; /* this can change */
 | 
				
			||||||
 | 
					    char *arch = get_cpu_arch(), *model = get_cpu_model();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /*XXX should only do this once*/
 | 
					    /*XXX should only do this once*/
 | 
				
			||||||
    sigar_cpu_info_list_create(cpu_infos);
 | 
					    sigar_cpu_info_list_create(cpu_infos);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for (i=0; i<ncpu; i++) {
 | 
					    for (i=0; i<ncpu; i++) {
 | 
				
			||||||
        sigar_cpu_info_t *info;
 | 
					        sigar_cpu_info_t *info;
 | 
				
			||||||
        char *arch, *model=NULL;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        SIGAR_CPU_INFO_LIST_GROW(cpu_infos);
 | 
					        SIGAR_CPU_INFO_LIST_GROW(cpu_infos);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1900,84 +1956,18 @@ int sigar_cpu_info_list_get(sigar_t *sigar,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        info->mhz = sigar_get_cpu_mhz(sigar);
 | 
					        info->mhz = sigar_get_cpu_mhz(sigar);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        arch = get_cpu_arch();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (*arch == 'P') {
 | 
					        if (*arch == 'P') {
 | 
				
			||||||
            SIGAR_SSTRCPY(info->vendor, "IBM");
 | 
					            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') {
 | 
					        else if (*arch == 'I') {
 | 
				
			||||||
            SIGAR_SSTRCPY(info->vendor, "Intel");
 | 
					            SIGAR_SSTRCPY(info->vendor, "Intel");
 | 
				
			||||||
 | 
					 | 
				
			||||||
            switch (_system_configuration.implementation) {
 | 
					 | 
				
			||||||
              case IA64_M1:
 | 
					 | 
				
			||||||
                model = "M1";
 | 
					 | 
				
			||||||
                break;
 | 
					 | 
				
			||||||
              case IA64_M2:
 | 
					 | 
				
			||||||
                model = "M2";
 | 
					 | 
				
			||||||
                break;
 | 
					 | 
				
			||||||
              default:
 | 
					 | 
				
			||||||
                break;
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        else {
 | 
					        else {
 | 
				
			||||||
            SIGAR_SSTRCPY(info->vendor, "IBM");
 | 
					            SIGAR_SSTRCPY(info->vendor, "Unknown");
 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (model) {
 | 
					        snprintf(info->model, sizeof(info->model),
 | 
				
			||||||
            snprintf(info->model, sizeof(info->model),
 | 
					                 "%s %s", arch, model);
 | 
				
			||||||
                     "%s %s", arch, model);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        else {
 | 
					 | 
				
			||||||
            SIGAR_SSTRCPY(info->model, arch);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return SIGAR_OK;
 | 
					    return SIGAR_OK;
 | 
				
			||||||
@ -2364,6 +2354,10 @@ int sigar_os_sys_info_get(sigar_t *sigar,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    SIGAR_SSTRCPY(sysinfo->vendor, "IBM");
 | 
					    SIGAR_SSTRCPY(sysinfo->vendor, "IBM");
 | 
				
			||||||
    SIGAR_SSTRCPY(sysinfo->arch, get_cpu_arch());
 | 
					    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",
 | 
					    sprintf(sysinfo->version, "%s.%s",
 | 
				
			||||||
            name.version, name.release);
 | 
					            name.version, name.release);
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user