summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/include/usr/hwpf/hwp/hwpisteperror.H33
-rw-r--r--src/usr/hwpf/hwp/hwpisteperror.C14
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);
OpenPOWER on IntegriCloud