diff options
author | Prem Shanker Jha <premjha2@in.ibm.com> | 2014-11-05 00:28:59 -0600 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2015-02-16 11:59:55 -0600 |
commit | 28253411cc210245e515edff5b166dd6114d711b (patch) | |
tree | 68885d83cc9359f0ca1016100d74fc8d1b12b542 /src/usr/diag/prdf/common/framework/rule/prdrExpr.H | |
parent | 0e58a17ace081132941307bb348edde68dea5279 (diff) | |
download | talos-hostboot-28253411cc210245e515edff5b166dd6114d711b.tar.gz talos-hostboot-28253411cc210245e515edff5b166dd6114d711b.zip |
PRD: Added support for gard of individual target callout.
Change-Id: I42b94169ec85c31410f7e2c95adfd19857351f65
RTC: 103773
Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/14322
Reviewed-by: Zane Shelley <zshelle@us.ibm.com>
Tested-by: Jenkins Server
Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/15739
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/diag/prdf/common/framework/rule/prdrExpr.H')
-rwxr-xr-x | src/usr/diag/prdf/common/framework/rule/prdrExpr.H | 60 |
1 files changed, 38 insertions, 22 deletions
diff --git a/src/usr/diag/prdf/common/framework/rule/prdrExpr.H b/src/usr/diag/prdf/common/framework/rule/prdrExpr.H index 79da66918..56cda4d49 100755 --- a/src/usr/diag/prdf/common/framework/rule/prdrExpr.H +++ b/src/usr/diag/prdf/common/framework/rule/prdrExpr.H @@ -5,7 +5,9 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* COPYRIGHT International Business Machines Corp. 2004,2014 */ +/* Contributors Listed Below - COPYRIGHT 2012,2015 */ +/* [+] International Business Machines Corp. */ +/* */ /* */ /* Licensed under the Apache License, Version 2.0 (the "License"); */ /* you may not use this file except in compliance with the License. */ @@ -860,24 +862,19 @@ class ExprAct_Callout : public Expr Expr * cv_alt; - enum Callout_type - { - CALLOUT_SELF = 's', - CALLOUT_CHIP = 'c', - CALLOUT_PROC = 'p', - CALLOUT_PEER = 'r', - }; - - Callout_type cv_type; + Prdr::Callout_type cv_type; + std::string * cv_4; ExprAct_Callout(std::string * i_1, std::string * i_2 = NULL, - Callout_type i_t = CALLOUT_SELF, + Prdr::Callout_type i_t = Prdr::CALLOUT_GARD_SELF, uint32_t i_3 = 0xffffffff, - Expr * i_alt = NULL): + Expr * i_alt = NULL, + std::string * i_4 = NULL ): cv_1(i_1), cv_2(i_2), cv_3(i_3), cv_alt(i_alt), - cv_type(i_t) + cv_type(i_t), + cv_4( i_4 ) {} int output(FILE * i_file) @@ -893,7 +890,7 @@ class ExprAct_Callout : public Expr uint32_t l_priority = htonl(prdrActionArgMap(*cv_1)); PRDR_FWRITE(&l_priority, sizeof(l_priority), 1, i_file); - if (CALLOUT_SELF != cv_type) + if ( Prdr::CALLOUT_GARD_SELF != cv_type ) { uint32_t l_arg = htonl(prdrActionArgMap(*cv_2)); PRDR_FWRITE(&l_arg, sizeof(l_arg), 1, i_file); @@ -909,15 +906,28 @@ class ExprAct_Callout : public Expr cv_alt->output(i_file); // Write peer connection type - if(CALLOUT_PEER == cv_type) + if(Prdr::CALLOUT_GARD_PEER == cv_type) l_arg = htonl(prdrActionArgMap(*cv_2)); else l_arg = htonl(prdrActionArgMap("TYPE_NA")); PRDR_FWRITE(&l_arg, sizeof(l_arg), 1, i_file); } + // Write gard state + if( NULL == cv_4 ) + { + // if no policy for gard has been specified, assume it to be + // GARD. + l_op = prdrActionArgMap("GARD"); + } + else + { + l_op = prdrActionArgMap(*cv_4); + } + PRDR_FWRITE(&l_op, 1, 1, i_file); return 0; + }; void generateDoxygen(std::ostream & o_stream, @@ -925,17 +935,24 @@ class ExprAct_Callout : public Expr std::ostream & o_errFile = std::cerr) { o_stream << "callout ( "; - if (CALLOUT_SELF == cv_type) + std::string tmpGard("GARD"); + if( NULL != cv_4 ) { - o_stream << "SELF, " << *cv_1 << " )"; + tmpGard.assign( *cv_4 ); } - else if (CALLOUT_PROC == cv_type) + + if ( Prdr::CALLOUT_GARD_SELF == cv_type ) { - o_stream << "procedure ( " << *cv_2 << " ), " << *cv_1 << " ) "; + o_stream << "SELF, " << *cv_1 << tmpGard << " )"; + } + else if ( Prdr::CALLOUT_PROC == cv_type ) + { + o_stream << "procedure ( " << *cv_2 << " ), " << *cv_1 + << "NO GARD" << " ) "; } else { - if(CALLOUT_PEER == cv_type) + if(Prdr::CALLOUT_GARD_PEER == cv_type) { o_stream << "connected_peer ( " << *cv_2 ; } @@ -946,10 +963,9 @@ class ExprAct_Callout : public Expr if ( 0xffffffff != cv_3 ) o_stream << ", " << cv_3; - o_stream << " ), " << *cv_1 << " ) "; + o_stream << " ), " << *cv_1 << tmpGard << " ) "; } } - }; class ExprAct_Funccall : public Expr |