Attn: Cleanup trace messages
Remove occurrances of ss.str().c_str() and use std::string in lieu of
stringstream when stringstream conveniences are not needed.
Signed-off-by: Ben Tyner <ben.tyner@ibm.com>
Change-Id: Ie80a64a0d63eb4a24ef905c72b2dbe1390e9bacc
diff --git a/attn/attn_handler.cpp b/attn/attn_handler.cpp
index a4abf74..93554fe 100644
--- a/attn/attn_handler.cpp
+++ b/attn/attn_handler.cpp
@@ -53,8 +53,6 @@
uint32_t isr_val, isr_mask;
- std::stringstream ss; // for trace messages
-
// loop through processors looking for active attentions
trace<level::INFO>("Attention handler started");
@@ -68,37 +66,37 @@
// Use PIB target to determine if a processor is enabled
char path[16];
sprintf(path, "/proc%d/pib", proc);
- pdbg_target* attnTarget = pdbg_target_from_path(nullptr, path);
+ pdbg_target* pibTarget = pdbg_target_from_path(nullptr, path);
// sanity check
- if (nullptr == attnTarget)
+ if (nullptr == pibTarget)
{
trace<level::INFO>("pib path or target not found");
continue;
}
- if (PDBG_TARGET_ENABLED == pdbg_target_probe(attnTarget))
+ // check if pib target is enabled
+ if (PDBG_TARGET_ENABLED == pdbg_target_probe(pibTarget))
{
// The processor FSI target is required for CFAM read
sprintf(path, "/proc%d/fsi", proc);
- attnTarget = pdbg_target_from_path(nullptr, path);
+ pdbg_target* fsiTarget = pdbg_target_from_path(nullptr, path);
// sanity check
- if (nullptr == attnTarget)
+ if (nullptr == fsiTarget)
{
trace<level::INFO>("fsi path or target not found");
continue;
}
- // trace fsi path
- ss.str(std::string()); // clear stream
- ss << "target - " << path;
- trace<level::INFO>(ss.str().c_str());
+ // trace the proc number
+ std::string traceMsg = "proc: " + std::to_string(proc);
+ trace<level::INFO>(traceMsg.c_str());
isr_val = 0xffffffff; // invalid isr value
// get active attentions on processor
- if (RC_SUCCESS != fsi_read(attnTarget, 0x1007, &isr_val))
+ if (RC_SUCCESS != fsi_read(fsiTarget, 0x1007, &isr_val))
{
// log cfam read error
trace<level::INFO>("Error! cfam read 0x1007 FAILED");
@@ -111,17 +109,17 @@
}
else
{
- // trace isr
- ss.str(std::string()); // clear stream
- ss << std::hex << std::showbase; // trace as hex vals
- ss << "cfam 0x1007 = " << std::setw(8) << std::setfill('0')
- << isr_val;
- trace<level::INFO>(ss.str().c_str());
+ // trace isr value
+ std::stringstream ssIsr;
+ ssIsr << "cfam 0x1007 = 0x" << std::setw(8)
+ << std::setfill('0') << std::hex << isr_val;
+ std::string strobjIsr = ssIsr.str();
+ trace<level::INFO>(strobjIsr.c_str());
isr_mask = 0xffffffff; // invalid isr mask
// get interrupt enabled special attentions mask
- if (RC_SUCCESS != fsi_read(attnTarget, 0x100d, &isr_mask))
+ if (RC_SUCCESS != fsi_read(fsiTarget, 0x100d, &isr_mask))
{
// log cfam read error
trace<level::INFO>("Error! cfam read 0x100d FAILED");
@@ -134,12 +132,12 @@
}
else
{
- // trace true-mask
- ss.str(std::string()); // clear stream
- ss << std::hex << std::showbase; // trace as hex vals
- ss << "cfam 0x100d = " << std::setw(8)
- << std::setfill('0') << isr_mask;
- trace<level::INFO>(ss.str().c_str());
+ // trace true mask
+ std::stringstream ssMask;
+ ssMask << "cfam 0x100d = 0x" << std::setw(8)
+ << std::setfill('0') << std::hex << isr_mask;
+ std::string strobjMask = ssMask.str();
+ trace<level::INFO>(strobjMask.c_str());
// SBE vital attention active and not masked?
if (true == activeAttn(isr_val, isr_mask, SBE_ATTN))
@@ -167,8 +165,8 @@
}
} // cfam 0x100d valid
} // cfam 0x1007 valid
- } // proc target enabled
- } // fsi target enabled
+ } // fsi target enabled
+ } // pib target enabled
} // next processor
// convert to heap, highest priority is at front
@@ -270,13 +268,16 @@
{
TiDataArea* tiDataArea = (TiDataArea*)tiInfo;
- // trace a few known TI data area values
- std::stringstream ss;
- ss << std::hex << std::showbase;
+ std::stringstream ss; // string stream object for tracing
+ std::string strobj; // string object for tracing
- ss << "TI data command = " << (int)tiDataArea->command;
- trace<level::INFO>(ss.str().c_str());
- ss.str(std::string());
+ // trace a few known TI data area values
+ ss.str(std::string()); // empty the stream
+ ss.clear(); // clear the stream
+ ss << "TI data command = 0x" << std::setw(2) << std::setfill('0')
+ << std::hex << (int)tiDataArea->command;
+ strobj = ss.str();
+ trace<level::INFO>(strobj.c_str());
// Another check for valid TI Info since it has been seen that
// tiInfo[0] != 0 but TI info is not valid
@@ -285,18 +286,27 @@
tiInfoValid = true;
// trace some more data since TI info appears valid
- ss << "TI data hb_terminate_type = "
+ ss.str(std::string()); // empty the stream
+ ss.clear(); // clear the stream
+ ss << "TI data hb_terminate_type = 0x" << std::setw(2)
+ << std::setfill('0') << std::hex
<< (int)tiDataArea->hbTerminateType;
- trace<level::INFO>(ss.str().c_str());
- ss.str(std::string());
+ strobj = ss.str();
+ trace<level::INFO>(strobj.c_str());
- ss << "TI data SRC format = " << (int)tiDataArea->srcFormat;
- trace<level::INFO>(ss.str().c_str());
- ss.str(std::string());
+ ss.str(std::string()); // empty the stream
+ ss.clear(); // clear the stream
+ ss << "TI data SRC format = 0x" << std::setw(2) << std::setfill('0')
+ << std::hex << (int)tiDataArea->srcFormat;
+ strobj = ss.str();
+ trace<level::INFO>(strobj.c_str());
- ss << "TI data source = " << (int)tiDataArea->source;
- trace<level::INFO>(ss.str().c_str());
- ss.str(std::string());
+ ss.str(std::string()); // empty the stream
+ ss.clear(); // clear the stream
+ ss << "TI data source = 0x" << std::setw(2) << std::setfill('0')
+ << std::hex << (int)tiDataArea->source;
+ strobj = ss.str();
+ trace<level::INFO>(strobj.c_str());
if (true == (i_attention->getConfig()->getFlag(enTerminate)))
{
@@ -400,7 +410,8 @@
}
}
- trace<level::INFO>(ss.str().c_str()); // commit trace stream
+ std::string strobj = ss.str(); // ss.str() is temporary
+ trace<level::INFO>(strobj.c_str()); // commit trace stream
}
return rc;
diff --git a/attn/attn_logging.cpp b/attn/attn_logging.cpp
index 70acaa4..c4ab877 100644
--- a/attn/attn_logging.cpp
+++ b/attn/attn_logging.cpp
@@ -129,9 +129,9 @@
}
catch (const std::exception& e)
{
- std::stringstream ss;
- ss << "createFFDCFiles: " << e.what();
- trace<level::INFO>(ss.str().c_str());
+ std::string traceMessage =
+ "createFFDCTraceFiles: " + std::string(e.what());
+ trace<level::INFO>(traceMessage.c_str());
}
}
}
diff --git a/attn/ti_handler.cpp b/attn/ti_handler.cpp
index e5a6b1f..77b1df7 100644
--- a/attn/ti_handler.cpp
+++ b/attn/ti_handler.cpp
@@ -28,10 +28,9 @@
if (nullptr != i_tiDataArea)
{
// HB v. PHYP TI logic: Only hosboot will fill in hbTerminateType
- // and it will be non-zero. Only hostboot will fill out source and it
- // it will be non-zero. Only PHYP will fill in srcFormat and it will
- // be non-zero.
- // source and only PHYP will fill in srcFormat.
+ // and it will be non-zero. Only hostboot will fill out source and
+ // it it will be non-zero. Only PHYP will fill in srcFormat and it
+ // will be non-zero.
if ((0 == i_tiDataArea->hbTerminateType) &&
(0 == i_tiDataArea->source) && (0 != i_tiDataArea->srcFormat))
{
@@ -121,36 +120,52 @@
// handle specific hostboot reason codes
if (nullptr != i_tiDataArea)
{
- std::stringstream ss;
- ss << std::hex << std::showbase;
+ std::stringstream ss; // stream object for tracing
+ std::string strobj; // string object for tracing
switch (i_tiDataArea->hbTerminateType)
{
case TI_WITH_PLID:
case TI_WITH_EID:
- ss << "TI with PLID/EID: " << be32toh(i_tiDataArea->asciiData1);
- trace<level::INFO>(ss.str().c_str());
+
+ // trace this value
+ ss.str(std::string()); // empty the stream
+ ss.clear(); // clear the stream
+ ss << "TI with PLID/EID: " << std::hex << std::showbase
+ << std::setw(8) << std::setfill('0')
+ << be32toh(i_tiDataArea->asciiData1);
+ strobj = ss.str();
+ trace<level::INFO>(strobj.c_str());
+
+ // see if HB dump is requested
if (0 == i_tiDataArea->hbDumpFlag)
{
hbDumpRequested = false; // no HB dump requested
}
break;
case TI_WITH_SRC:
- // SRC is byte 2 and 3 of 4 byte srcWord12HbWord0
- uint16_t hbSrc = be32toh(i_tiDataArea->srcWord12HbWord0);
+ // Reason code is byte 2 and 3 of 4 byte srcWord12HbWord0
+ uint16_t reasonCode = be32toh(i_tiDataArea->srcWord12HbWord0);
- // trace some info
- ss << "TI with SRC: " << (int)hbSrc;
- trace<level::INFO>(ss.str().c_str());
- ss.str(std::string()); // clear stream
+ // trace this value
+ ss.str(std::string()); // empty the stream
+ ss.clear(); // clear the stream
+ ss << "TI with SRC: " << std::hex << std::showbase
+ << std::setw(4) << std::setfill('0') << (int)reasonCode;
+ strobj = ss.str();
+ trace<level::INFO>(strobj.c_str());
- switch (hbSrc)
+ switch (reasonCode)
{
case HB_SRC_SHUTDOWN_REQUEST:
trace<level::INFO>("shutdown request");
- generatePel = false;
+ generatePel = false;
+ hbDumpRequested = false;
break;
case HB_SRC_KEY_TRANSITION:
+ // Note: Should never see this so lets leave
+ // hbDumpRequested == true so we can figure out why
+ // we are here.
trace<level::INFO>("key transition");
terminateHost = false;
break;