Skip to content

Commit

Permalink
User fields configuration using a funciton
Browse files Browse the repository at this point in the history
Change-Id: Ie156c968a9140c3b541b15dfc41f1c19a6e3b876
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/39984
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: Sachin Gupta <sgupta2m@in.ibm.com>
Reviewed-by: AMIT J. TENDOLKAR <amit.tendolkar@in.ibm.com>
  • Loading branch information
Shakeebbk authored and sgupta2m committed May 24, 2017
1 parent eeb6617 commit 7a87a60
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 16 deletions.
44 changes: 29 additions & 15 deletions src/sbefw/sbeFFDC.C
Expand Up @@ -29,6 +29,34 @@
#include "sberegaccess.H"
#include "sbeFFDC.H"
#include "sbe_build_info.H"
#include "sbeglobals.H"

/*
* @bried updateUserDataHeader - method to update user data fields
* based on input config
*
* @param[in] i_fieldsConfig - input fields configuration
*/
void SbeFFDCPackage::updateUserDataHeader(uint32_t i_fieldsConfig)
{
//Update the user data header with dump fields configuration
iv_sbeFFDCDataHeader.dumpFields.set(i_fieldsConfig);
iv_sbeFFDCHeader.lenInWords = (sizeof(sbeResponseFfdc_t) +
sizeof(sbeFFDCDataHeader_t))
/sizeof(uint32_t);
//Update the length in ffdc package header base on required fields
for(auto &sbeFFDCUserData:sbeFFDCUserDataArray)
{
if(sbeFFDCUserData.userDataId.fieldId & i_fieldsConfig)
{
iv_sbeFFDCHeader.lenInWords +=
(sbeFFDCUserData.userDataId.fieldLen +
sizeof(sbeFFDCUserDataIdentifier_t))
/sizeof(uint32_t);
}
}
}

/*
* @brief sendOverFIFO - method to pack and send SBE internal FFDC
* only if isSendInternalFFDCSet() is true
Expand Down Expand Up @@ -77,21 +105,7 @@ uint32_t SbeFFDCPackage::sendOverFIFO(const sbeRespGenHdr_t &i_hdr,
// Sequence Id is 0 by default for Fifo interface
iv_sbeFFDCHeader.setCmdInfo(0, i_hdr.cmdClass, i_hdr.command);
//Update the user data header with dump fields configuration
iv_sbeFFDCDataHeader.dumpFields.set(i_fieldsConfig);
iv_sbeFFDCHeader.lenInWords = (sizeof(sbeResponseFfdc_t) +
sizeof(sbeFFDCDataHeader_t))
/sizeof(uint32_t);
//Update the length in ffdc package header base on required fields
for(auto &sbeFFDCUserData:sbeFFDCUserDataArray)
{
if(sbeFFDCUserData.userDataId.fieldId & i_fieldsConfig)
{
iv_sbeFFDCHeader.lenInWords +=
(sbeFFDCUserData.userDataId.fieldLen +
sizeof(sbeFFDCUserDataIdentifier_t))
/sizeof(uint32_t);
}
}
updateUserDataHeader(i_fieldsConfig);

//Send FFDC package header
length = sizeof(iv_sbeFFDCHeader) / sizeof(uint32_t);
Expand Down
10 changes: 9 additions & 1 deletion src/sbefw/sbeFFDC.H
Expand Up @@ -5,7 +5,7 @@
/* */
/* OpenPOWER sbe Project */
/* */
/* Contributors Listed Below - COPYRIGHT 2016 */
/* Contributors Listed Below - COPYRIGHT 2016,2017 */
/* [+] International Business Machines Corp. */
/* */
/* */
Expand Down Expand Up @@ -63,6 +63,14 @@ private:
//FFDC user data header
sbeFFDCDataHeader_t iv_sbeFFDCDataHeader;

/*
* @bried updateUserDataHeader - method to update user data fields
* based on input config
*
* @param[in] i_fieldsConfig - input fields configuration
*/
void updateUserDataHeader(uint32_t i_fieldsConfig);

public:
/*ctor
*
Expand Down

0 comments on commit 7a87a60

Please sign in to comment.