summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdriana Kobylak <anoo@us.ibm.com>2017-02-28 12:10:44 -0600
committerAdriana Kobylak <anoo@us.ibm.com>2017-03-15 11:37:06 -0500
commitd722b3aa03c55f9a9737fb47a68e66ad803f53cc (patch)
treea2b88ab4e540baf101a6b0a22dba12f31a167896
parenta3db07742c870b5e974c8f8c8ae724ca2298b015 (diff)
downloadphosphor-logging-d722b3aa03c55f9a9737fb47a68e66ad803f53cc.tar.gz
phosphor-logging-d722b3aa03c55f9a9737fb47a68e66ad803f53cc.zip
Make generated code to be const and extern
Set generated maps to be const so that they don't get accidentally overwritten. Use .find() to access these generated data sets as the [] operator is not const. Declare the generated maps as extern so that there's no need to include the generated .cpp file. Change-Id: I4efdcace099bec738e1fa9b67decbedd515d3dfa Signed-off-by: Adriana Kobylak <anoo@us.ibm.com>
-rw-r--r--Makefile.am1
-rw-r--r--log_manager.cpp17
-rw-r--r--log_manager.hpp5
-rw-r--r--tools/phosphor-logging/templates/elog-lookup-template.mako.cpp5
4 files changed, 22 insertions, 6 deletions
diff --git a/Makefile.am b/Makefile.am
index f2c44d9..40f780d 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -31,6 +31,7 @@ phosphor_log_manager_SOURCES = \
xyz/openbmc_project/Logging/Internal/Manager/server.cpp \
log_manager.cpp \
log_manager_main.cpp \
+ elog-lookup.cpp \
elog_entry.cpp \
org.openbmc.Associations.cpp \
elog-process-metadata.cpp
diff --git a/log_manager.cpp b/log_manager.cpp
index 21111a0..e497ae0 100644
--- a/log_manager.cpp
+++ b/log_manager.cpp
@@ -8,7 +8,6 @@
#include <sdbusplus/vtable.hpp>
#include <systemd/sd-bus.h>
#include <systemd/sd-journal.h>
-#include "elog-lookup.cpp"
#include <phosphor-logging/elog-errors-HostEvent.hpp>
#include "config.h"
#include "elog_entry.hpp"
@@ -43,8 +42,12 @@ void Manager::commit(uint64_t transactionId, std::string errMsg)
}
std::string transactionIdStr = std::to_string(transactionId);
- std::set<std::string> metalist(g_errMetaMap[errMsg].begin(),
- g_errMetaMap[errMsg].end());
+ std::set<std::string> metalist;
+ auto metamap = g_errMetaMap.find(errMsg);
+ if (metamap != g_errMetaMap.end())
+ {
+ metalist.insert(metamap->second.begin(), metamap->second.end());
+ }
const auto& metalistHostEvent = g_errMetaMapHostEvent[errMsg];
std::vector<std::string> additionalData;
@@ -136,12 +139,18 @@ void Manager::commit(uint64_t transactionId, std::string errMsg)
AssociationList objects {};
processMetadata(errMsg, additionalData, objects);
+ level reqLevel = level::INFO; // Default to INFO
+ auto levelmap = g_errLevelMap.find(errMsg);
+ if (levelmap != g_errLevelMap.end())
+ {
+ reqLevel = levelmap->second;
+ }
entries.insert(std::make_pair(entryId, std::make_unique<Entry>(
busLog,
objPath,
entryId,
ms, // Milliseconds since 1970
- (Entry::Level)g_errLevelMap[errMsg],
+ static_cast<Entry::Level>(reqLevel),
std::move(errMsg),
std::move(additionalData),
std::move(objects))));
diff --git a/log_manager.hpp b/log_manager.hpp
index 285b337..e2a3359 100644
--- a/log_manager.hpp
+++ b/log_manager.hpp
@@ -1,6 +1,7 @@
#pragma once
#include <sdbusplus/bus.hpp>
+#include <phosphor-logging/log.hpp>
#include "elog_entry.hpp"
#include "xyz/openbmc_project/Logging/Internal/Manager/server.hpp"
@@ -8,6 +9,10 @@ namespace phosphor
{
namespace logging
{
+
+extern const std::map<std::string,std::vector<std::string>> g_errMetaMap;
+extern const std::map<std::string,level> g_errLevelMap;
+
namespace details
{
diff --git a/tools/phosphor-logging/templates/elog-lookup-template.mako.cpp b/tools/phosphor-logging/templates/elog-lookup-template.mako.cpp
index 5e9e1ba..efa5278 100644
--- a/tools/phosphor-logging/templates/elog-lookup-template.mako.cpp
+++ b/tools/phosphor-logging/templates/elog-lookup-template.mako.cpp
@@ -4,6 +4,7 @@
// See elog-gen.py for more details
#include <map>
#include <vector>
+#include <log_manager.hpp>
#include <phosphor-logging/log.hpp>
namespace phosphor
@@ -12,7 +13,7 @@ namespace phosphor
namespace logging
{
-std::map<std::string,std::vector<std::string>> g_errMetaMap = {
+const std::map<std::string,std::vector<std::string>> g_errMetaMap = {
% for name in errors:
<%
meta_list = []
@@ -33,7 +34,7 @@ std::map<std::string,std::vector<std::string>> g_errMetaMap = {
% endfor
};
-std::map<std::string,level> g_errLevelMap = {
+const std::map<std::string,level> g_errLevelMap = {
% for a in errors:
{"${a}",level::${error_lvl[a]}},
% endfor
OpenPOWER on IntegriCloud