diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/include/usr/hwpf/hwp/hwpisteperror.H | 33 | ||||
-rw-r--r-- | src/usr/hwpf/hwp/hwpisteperror.C | 14 |
2 files changed, 21 insertions, 26 deletions
diff --git a/src/include/usr/hwpf/hwp/hwpisteperror.H b/src/include/usr/hwpf/hwp/hwpisteperror.H index b0f47e26c..d5734d4fc 100644 --- a/src/include/usr/hwpf/hwp/hwpisteperror.H +++ b/src/include/usr/hwpf/hwp/hwpisteperror.H @@ -5,7 +5,7 @@ /* */ /* IBM CONFIDENTIAL */ /* */ -/* COPYRIGHT International Business Machines Corp. 2012,2013 */ +/* COPYRIGHT International Business Machines Corp. 2012,2014 */ /* */ /* p1 */ /* */ @@ -28,8 +28,7 @@ * Defines the following classes: * * IStepError: Handles creation of a top level error to incidate that a - * particular ISTEP has failed, all hwp error plids are added - * to the top level error. + * particular ISTEP has failed */ #include <errl/errlentry.H> @@ -41,20 +40,18 @@ namespace ISTEP_ERROR /** * @class IStepError * - * Inteface to the a top level error log returned to the ISTEP dispatcher - * when an individual step fails due to an error in a hardware procedure. + * Contains a top-level IStep failed error log. * - * The class may be used to aggregate the errors returned from procedures - * which may have been run in parallel. The top level error log will - * indicate the failed step and the module in which the error was created. - * Callers should note that only the addErrorDetails call should be used - * within a thread. - * - * NOTE: This class returns an allocated error log object which needs to - * deleted by the reciever. - * users must call getErrorHandle() to recieve the pointer which can - * be deleted. + * Isteps can perform operations on multiple components regardless of errors + * in order to initilize as much hardware as possible. Each IStep creates an + * IstepError object and for each sub-error, the addErrorDetails() function + * is called before the caller commits the sub-error. At the end of an + * IStep, the getErrorHandle() function is called to return the top-level + * istep error (if any) to the IStep Dispatcher. * + * The top-level IStep error and all sub-errors have the same PLID (matching + * the EID of the first sub-error) so that the IStep error is linked to all + * errors that caused the IStep failure. */ class IStepError { @@ -87,10 +84,6 @@ namespace ISTEP_ERROR * @brief Adds selected error details from the passed in * error to the top level istep error log object * - * The expected usage for this object is to agrigate - * errors which may have been generated by hardware - * procedures which are run in parallel. - * * The first call will initialize the internal object * pointer allocating a new errl object as needed. * The iStep and subStep is retrieved from the @@ -113,7 +106,7 @@ namespace ISTEP_ERROR * log object. * * Note: Caller must delete the errlHndl_t after use. - * This funciton is not thread safe + * This function is not thread safe * * @return iv_eHandle - error handle of top level ISTEP error to * be returned to the ISTEP dispatcher. diff --git a/src/usr/hwpf/hwp/hwpisteperror.C b/src/usr/hwpf/hwp/hwpisteperror.C index fd6fa648c..72ec16882 100644 --- a/src/usr/hwpf/hwp/hwpisteperror.C +++ b/src/usr/hwpf/hwp/hwpisteperror.C @@ -5,7 +5,7 @@ /* */ /* IBM CONFIDENTIAL */ /* */ -/* COPYRIGHT International Business Machines Corp. 2012,2013 */ +/* COPYRIGHT International Business Machines Corp. 2012,2014 */ /* */ /* p1 */ /* */ @@ -64,23 +64,25 @@ void IStepError::addErrorDetails( const errlHndl_t i_err ) * for reason. * */ - iv_eHandle = new ERRORLOG::ErrlEntry(ERRORLOG::ERRL_SEV_UNRECOVERABLE, ISTEP_REPORTING_ERROR, ISTEP_FAILURE, data1, data2); + + // Set the PLID of this istep elog to match the first error + iv_eHandle->plid(i_err->plid()); } - else // just increment error count + else { // retrieve iStep and subStep uint32_t l_iStepSubStep = (iv_eHandle->getUserData2() & 0xFFFFFFFF); // update the error count and keep iStep/subStep in user data word 1 uint64_t l_data2 = TWO_UINT32_TO_UINT64 (iv_errorCount,l_iStepSubStep); iv_eHandle->addUserData2(l_data2); - } - // set the plid of the input elog to match the istep elog - i_err->plid( iv_eHandle->plid() ); + // set the plid of the input elog to match the first and istep elog + i_err->plid( iv_eHandle->plid() ); + } // grab the istep's trace and add to the input elog i_err->collectTrace("ISTEPS_TRACE", 1024); |