summaryrefslogtreecommitdiffstats
path: root/sbe
diff options
context:
space:
mode:
Diffstat (limited to 'sbe')
-rw-r--r--sbe/sbefw/sbeFFDC.C8
-rw-r--r--sbe/sbefw/sbeFFDC.H2
-rw-r--r--sbe/sbefw/sbeFFDCType.H17
3 files changed, 22 insertions, 5 deletions
diff --git a/sbe/sbefw/sbeFFDC.C b/sbe/sbefw/sbeFFDC.C
index 2d9eb845..e42b4239 100644
--- a/sbe/sbefw/sbeFFDC.C
+++ b/sbe/sbefw/sbeFFDC.C
@@ -68,7 +68,7 @@ uint32_t SbeFFDCPackage::sendOverFIFO(uint32_t i_primStatus,
//Update the user data header with dump fields configuration
iv_sbeFFDCDataHeader.dumpFields.set(i_fieldsConfig);
iv_sbeFFDCHeader.lenInWords = (sizeof(sbeResponseFfdc_t) +
- sizeof(sbeFFDCUserDataIdentifier_t))
+ sizeof(sbeFFDCDataHeader_t))
/sizeof(uint32_t);
//Update the length in ffdc package header base on required fields
for(auto &sbeFFDCUserData:sbeFFDCUserDataArray)
@@ -76,8 +76,9 @@ uint32_t SbeFFDCPackage::sendOverFIFO(uint32_t i_primStatus,
if(sbeFFDCUserData.userDataId.fieldId & i_fieldsConfig)
{
iv_sbeFFDCHeader.lenInWords +=
- sbeFFDCUserData.userDataId.fieldLen
- /sizeof(uint32_t);
+ (sbeFFDCUserData.userDataId.fieldLen +
+ sizeof(sbeFFDCUserDataIdentifier_t))
+ /sizeof(uint32_t);
}
}
@@ -132,7 +133,6 @@ uint32_t SbeFFDCPackage::sendOverFIFO(uint32_t i_primStatus,
}
SBE_DEBUG(SBE_FUNC "Number of words sent [%d]", o_bytesSent);
- break;
} while(false);
SBE_EXIT(SBE_FUNC);
diff --git a/sbe/sbefw/sbeFFDC.H b/sbe/sbefw/sbeFFDC.H
index 885337dd..8cf8408e 100644
--- a/sbe/sbefw/sbeFFDC.H
+++ b/sbe/sbefw/sbeFFDC.H
@@ -125,7 +125,7 @@ public:
uint32_t i_fieldsConfig,
uint32_t &o_bytesSent);
- /*
+ /* TODO via RTC:150786
* @brief sendOverHOST - method to pack and send SBE internal FFDC
* only if isSendInternalFFDCSet() is true
* over HOST interface
diff --git a/sbe/sbefw/sbeFFDCType.H b/sbe/sbefw/sbeFFDCType.H
index 71a5c9ae..056e7907 100644
--- a/sbe/sbefw/sbeFFDCType.H
+++ b/sbe/sbefw/sbeFFDCType.H
@@ -56,6 +56,23 @@ typedef struct
traceField = true;
}
}
+ /* @brief - get dump fields as uint32_t
+ *
+ * @return - uint32_t value
+ */
+ uint32_t get()
+ {
+ uint32_t l_val = 0;
+ if(attrField)
+ {
+ l_val |= SBE_FFDC_ATTR_DUMP;
+ }
+ if(traceField)
+ {
+ l_val |= SBE_FFDC_TRACE_DUMP;
+ }
+ return l_val;
+ }
} sbeFFDCDumpFields_t;
//Sturcture indicating the type of ffdc user data blob
OpenPOWER on IntegriCloud