From 381f0c0a5cd98a48dc6d5a5e0b98443707d8ea81 Mon Sep 17 00:00:00 2001 From: Peter Schiffer Date: Thu, 4 Apr 2013 19:02:29 +0200 Subject: 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 --- src/hardware/LMI_ProcessorCapabilitiesProvider.c | 28 ++++++++++++++---------- 1 file changed, 16 insertions(+), 12 deletions(-) (limited to 'src/hardware/LMI_ProcessorCapabilitiesProvider.c') 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); -- cgit