From 7a87a60b9965fd59ba534913280e6fdd2646867e Mon Sep 17 00:00:00 2001 From: spashabk-in Date: Wed, 3 May 2017 02:45:57 -0500 Subject: User fields configuration using a funciton Change-Id: Ie156c968a9140c3b541b15dfc41f1c19a6e3b876 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/39984 Tested-by: Jenkins Server Tested-by: FSP CI Jenkins Reviewed-by: Sachin Gupta Reviewed-by: AMIT J. TENDOLKAR --- src/sbefw/sbeFFDC.C | 44 +++++++++++++++++++++++++++++--------------- src/sbefw/sbeFFDC.H | 10 +++++++++- 2 files changed, 38 insertions(+), 16 deletions(-) diff --git a/src/sbefw/sbeFFDC.C b/src/sbefw/sbeFFDC.C index 826579f1..8bff48d5 100644 --- a/src/sbefw/sbeFFDC.C +++ b/src/sbefw/sbeFFDC.C @@ -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 @@ -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); diff --git a/src/sbefw/sbeFFDC.H b/src/sbefw/sbeFFDC.H index e77c54b6..4c9448e3 100644 --- a/src/sbefw/sbeFFDC.H +++ b/src/sbefw/sbeFFDC.H @@ -5,7 +5,7 @@ /* */ /* OpenPOWER sbe Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2016 */ +/* Contributors Listed Below - COPYRIGHT 2016,2017 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -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 * -- cgit v1.2.1