summaryrefslogtreecommitdiffstats
path: root/src/hardware/LMI_ProcessorElementCapabilitiesProvider.c
diff options
context:
space:
mode:
authorPeter Schiffer <pschiffe@redhat.com>2013-04-04 19:02:29 +0200
committerPeter Schiffer <pschiffe@redhat.com>2013-04-04 19:02:29 +0200
commit381f0c0a5cd98a48dc6d5a5e0b98443707d8ea81 (patch)
treebdad2e739aac00eb02e71dfe7d4074268c6f69a4 /src/hardware/LMI_ProcessorElementCapabilitiesProvider.c
parentc47c5c19c5857439db30e40d4a691f5b700adf5f (diff)
downloadopenlmi-providers-381f0c0a5cd98a48dc6d5a5e0b98443707d8ea81.tar.gz
openlmi-providers-381f0c0a5cd98a48dc6d5a5e0b98443707d8ea81.tar.xz
openlmi-providers-381f0c0a5cd98a48dc6d5a5e0b98443707d8ea81.zip
Hardware: Added Processor Cache Memory Provider
New Providers: * LMI_ProcessorCacheMemoryProvider * LMI_AssociatedProcessorCacheMemoryProvider Other Changes: * Optimized usage of string constats * Fixed wrong usage of pointers in dmidecode.c * Filled unknown mandatory fields in providers with "Unknown" value * Replaced hard coded numbers with LMI constants * Minor optimization - don't gather data which won't be used
Diffstat (limited to 'src/hardware/LMI_ProcessorElementCapabilitiesProvider.c')
-rw-r--r--src/hardware/LMI_ProcessorElementCapabilitiesProvider.c28
1 files changed, 16 insertions, 12 deletions
diff --git a/src/hardware/LMI_ProcessorElementCapabilitiesProvider.c b/src/hardware/LMI_ProcessorElementCapabilitiesProvider.c
index a477717..ee9cf18 100644
--- a/src/hardware/LMI_ProcessorElementCapabilitiesProvider.c
+++ b/src/hardware/LMI_ProcessorElementCapabilitiesProvider.c
@@ -64,17 +64,17 @@ static CMPIStatus LMI_ProcessorElementCapabilitiesEnumInstances(
const char *ns = KNameSpace(cop);
char *error_msg = NULL, *instance_id = NULL;
unsigned i, cpus_nb = 0;
- DmiProcessor *dmi_cpus;
- unsigned dmi_cpus_nb;
+ DmiProcessor *dmi_cpus = NULL;
+ unsigned dmi_cpus_nb = 0;
LscpuProcessor lscpu;
if (dmi_get_processors(&dmi_cpus, &dmi_cpus_nb) != 0 || dmi_cpus_nb < 1) {
dmi_free_processors(&dmi_cpus, &dmi_cpus_nb);
- }
- if (lscpu_get_processor(&lscpu) != 0) {
- error_msg = "Unable to get processor information.";
- goto done;
+ if (lscpu_get_processor(&lscpu) != 0) {
+ error_msg = "Unable to get processor information.";
+ goto done;
+ }
}
if (dmi_cpus_nb > 0) {
@@ -93,7 +93,8 @@ static CMPIStatus LMI_ProcessorElementCapabilitiesEnumInstances(
LMI_ProcessorRef_Set_SystemCreationClassName(&lmi_cpu,
get_system_creation_class_name());
LMI_ProcessorRef_Set_SystemName(&lmi_cpu, get_system_name());
- LMI_ProcessorRef_Set_CreationClassName(&lmi_cpu, "LMI_Processor");
+ LMI_ProcessorRef_Set_CreationClassName(&lmi_cpu,
+ ORGID "_" CPU_CLASS_NAME);
LMI_ProcessorCapabilitiesRef_Init(&lmi_cpu_cap, _cb, ns);
@@ -101,8 +102,8 @@ static CMPIStatus LMI_ProcessorElementCapabilitiesEnumInstances(
if (dmi_cpus_nb > 0) {
LMI_ProcessorRef_Set_DeviceID(&lmi_cpu, dmi_cpus[i].id);
- if (asprintf(&instance_id, "%s:%s:%s", ORGID,
- CPU_CAP_CLASS_NAME, dmi_cpus[i].id) < 0) {
+ if (asprintf(&instance_id, ORGID ":" CPU_CAP_CLASS_NAME ":%s",
+ dmi_cpus[i].id) < 0) {
instance_id = NULL;
error_msg = "Not enough available memory.";
goto done;
@@ -118,8 +119,8 @@ static CMPIStatus LMI_ProcessorElementCapabilitiesEnumInstances(
free(cpu_id);
cpu_id = NULL;
- if (asprintf(&instance_id, "%s:%s:%u", ORGID,
- CPU_CAP_CLASS_NAME, i) < 0) {
+ if (asprintf(&instance_id, ORGID ":" CPU_CAP_CLASS_NAME ":%u",
+ i) < 0) {
instance_id = NULL;
error_msg = "Not enough available memory.";
goto done;
@@ -151,8 +152,11 @@ done:
}
instance_id = NULL;
+ /* free lscpu only if it was used */
+ if (dmi_cpus_nb < 1) {
+ lscpu_free_processor(&lscpu);
+ }
dmi_free_processors(&dmi_cpus, &dmi_cpus_nb);
- lscpu_free_processor(&lscpu);
if (error_msg) {
KReturn2(_cb, ERR_FAILED, error_msg);