diff options
author | Peter Schiffer <pschiffe@redhat.com> | 2014-02-06 14:24:08 +0100 |
---|---|---|
committer | Peter Schiffer <pschiffe@redhat.com> | 2014-02-06 15:43:35 +0100 |
commit | 01c7ce50f98a098f543f9a8144c55ad54aaa8358 (patch) | |
tree | 7c873326d643e268c1e4aa1f6b071aa3c5dbea80 | |
parent | ee1797c50132e920d7ba134d070f6b76ddf9b3a2 (diff) | |
download | openlmi-providers-01c7ce50f98a098f543f9a8144c55ad54aaa8358.tar.gz openlmi-providers-01c7ce50f98a098f543f9a8144c55ad54aaa8358.tar.xz openlmi-providers-01c7ce50f98a098f543f9a8144c55ad54aaa8358.zip |
Hardware: minor CPU provider updates
* added cpu name fallback to ProcessorChip class
* added stepping fallback for virtual CPUs to Processor class
-rw-r--r-- | src/hardware/LMI_ProcessorChipProvider.c | 22 | ||||
-rw-r--r-- | src/hardware/LMI_ProcessorProvider.c | 4 |
2 files changed, 20 insertions, 6 deletions
diff --git a/src/hardware/LMI_ProcessorChipProvider.c b/src/hardware/LMI_ProcessorChipProvider.c index 25d033c..946758f 100644 --- a/src/hardware/LMI_ProcessorChipProvider.c +++ b/src/hardware/LMI_ProcessorChipProvider.c @@ -23,6 +23,7 @@ #include "LMI_Hardware.h" #include "globals.h" #include "dmidecode.h" +#include "procfs.h" static const CMPIBroker* _cb = NULL; @@ -58,12 +59,16 @@ static CMPIStatus LMI_ProcessorChipEnumInstances( { LMI_ProcessorChip lmi_cpu_chip; const char *ns = KNameSpace(cop); - char instance_id[INSTANCE_ID_LEN]; + char instance_id[INSTANCE_ID_LEN], *cpu_name = NULL; + short ret1, ret2; unsigned i; DmiProcessor *dmi_cpus = NULL; unsigned dmi_cpus_nb = 0; + CpuinfoProcessor proc_cpu; - if (dmi_get_processors(&dmi_cpus, &dmi_cpus_nb) != 0 || dmi_cpus_nb < 1) { + ret1 = dmi_get_processors(&dmi_cpus, &dmi_cpus_nb); + ret2 = cpuinfo_get_processor(&proc_cpu); + if (ret1 != 0 || dmi_cpus_nb < 1 || ret2 != 0) { goto done; } @@ -76,11 +81,15 @@ static CMPIStatus LMI_ProcessorChipEnumInstances( snprintf(instance_id, INSTANCE_ID_LEN, ORGID ":" ORGID "_" CPU_CHIP_CLASS_NAME ":%s", dmi_cpus[i].id); + cpu_name = dmi_cpus[i].name; + if (!cpu_name || !strlen(cpu_name) + || !strcmp(cpu_name, "Not Specified")) { + cpu_name = proc_cpu.model_name; + } + LMI_ProcessorChip_Set_Tag(&lmi_cpu_chip, dmi_cpus[i].id); - LMI_ProcessorChip_Set_ElementName(&lmi_cpu_chip, dmi_cpus[i].name); LMI_ProcessorChip_Set_Manufacturer(&lmi_cpu_chip, dmi_cpus[i].manufacturer); - LMI_ProcessorChip_Set_Model(&lmi_cpu_chip, dmi_cpus[i].name); LMI_ProcessorChip_Set_SerialNumber(&lmi_cpu_chip, dmi_cpus[i].serial_number); LMI_ProcessorChip_Set_PartNumber(&lmi_cpu_chip, @@ -89,13 +98,16 @@ static CMPIStatus LMI_ProcessorChipEnumInstances( LMI_ProcessorChip_Set_Description(&lmi_cpu_chip, "This object represents one chip of processor in system."); LMI_ProcessorChip_Set_InstanceID(&lmi_cpu_chip, instance_id); - LMI_ProcessorChip_Set_Name(&lmi_cpu_chip, dmi_cpus[i].name); + LMI_ProcessorChip_Set_Model(&lmi_cpu_chip, cpu_name); + LMI_ProcessorChip_Set_Name(&lmi_cpu_chip, cpu_name); + LMI_ProcessorChip_Set_ElementName(&lmi_cpu_chip, cpu_name); KReturnInstance(cr, lmi_cpu_chip); } done: dmi_free_processors(&dmi_cpus, &dmi_cpus_nb); + cpuinfo_free_processor(&proc_cpu); CMReturn(CMPI_RC_OK); } diff --git a/src/hardware/LMI_ProcessorProvider.c b/src/hardware/LMI_ProcessorProvider.c index 59ebdc3..a7d2c2c 100644 --- a/src/hardware/LMI_ProcessorProvider.c +++ b/src/hardware/LMI_ProcessorProvider.c @@ -191,7 +191,6 @@ static CMPIStatus LMI_ProcessorEnumInstances( current_speed = lscpu.current_speed; } enabled_cores = lscpu.cores; - stepping = lscpu.stepping; LMI_Processor_Set_DeviceID(&lmi_cpu, cpu_id); } @@ -200,6 +199,9 @@ static CMPIStatus LMI_ProcessorEnumInstances( || !strcmp(cpu_name, "Not Specified")) { cpu_name = proc_cpu.model_name; } + if (!stepping || !strlen(stepping)) { + stepping = lscpu.stepping; + } LMI_Processor_Set_InstanceID(&lmi_cpu, instance_id); LMI_Processor_Set_CPUStatus(&lmi_cpu, cpustatus); |