diff options
author | Peter Schiffer <pschiffe@redhat.com> | 2013-04-04 19:02:29 +0200 |
---|---|---|
committer | Peter Schiffer <pschiffe@redhat.com> | 2013-04-04 19:02:29 +0200 |
commit | 381f0c0a5cd98a48dc6d5a5e0b98443707d8ea81 (patch) | |
tree | bdad2e739aac00eb02e71dfe7d4074268c6f69a4 /src/hardware/LMI_ProcessorElementCapabilitiesProvider.c | |
parent | c47c5c19c5857439db30e40d4a691f5b700adf5f (diff) | |
download | openlmi-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.c | 28 |
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); |