summaryrefslogtreecommitdiffstats
path: root/src/hardware/LMI_ProcessorCapabilitiesProvider.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_ProcessorCapabilitiesProvider.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_ProcessorCapabilitiesProvider.c')
-rw-r--r--src/hardware/LMI_ProcessorCapabilitiesProvider.c28
1 files changed, 16 insertions, 12 deletions
diff --git a/src/hardware/LMI_ProcessorCapabilitiesProvider.c b/src/hardware/LMI_ProcessorCapabilitiesProvider.c
index c9f7e14..c7c4ff2 100644
--- a/src/hardware/LMI_ProcessorCapabilitiesProvider.c
+++ b/src/hardware/LMI_ProcessorCapabilitiesProvider.c
@@ -62,17 +62,17 @@ static CMPIStatus LMI_ProcessorCapabilitiesEnumInstances(
*element_name_string = "Capabilities of processor ";
char *error_msg = NULL, *instance_id = NULL, *element_name = 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) {
@@ -89,8 +89,8 @@ static CMPIStatus LMI_ProcessorCapabilitiesEnumInstances(
/* do we have output from dmidecode program? */
if (dmi_cpus_nb > 0) {
- 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;
@@ -106,8 +106,8 @@ static CMPIStatus LMI_ProcessorCapabilitiesEnumInstances(
goto done;
}
} else {
- 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;
@@ -133,7 +133,8 @@ static CMPIStatus LMI_ProcessorCapabilitiesEnumInstances(
LMI_ProcessorCapabilities_Set_Caption(&lmi_cpu_cap,
"Processor Capabilities");
LMI_ProcessorCapabilities_Set_Description(&lmi_cpu_cap,
- "This object represents (mainly multi-core and multi-thread) capabilities of processor in system.");
+ "This object represents (mainly multi-core and multi-thread) "
+ "capabilities of processor in system.");
LMI_ProcessorCapabilities_Set_ElementName(&lmi_cpu_cap, element_name);
KReturnInstance(cr, lmi_cpu_cap);
@@ -158,8 +159,11 @@ done:
}
element_name = 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);