summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeter Schiffer <pschiffe@redhat.com>2014-02-06 14:24:08 +0100
committerPeter Schiffer <pschiffe@redhat.com>2014-02-06 15:43:35 +0100
commit01c7ce50f98a098f543f9a8144c55ad54aaa8358 (patch)
tree7c873326d643e268c1e4aa1f6b071aa3c5dbea80
parentee1797c50132e920d7ba134d070f6b76ddf9b3a2 (diff)
downloadopenlmi-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.c22
-rw-r--r--src/hardware/LMI_ProcessorProvider.c4
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);