summaryrefslogtreecommitdiffstats
path: root/src/usr/diag/prdf/common/framework/rule/prdrExpr.H
diff options
context:
space:
mode:
authorPrem Shanker Jha <premjha2@in.ibm.com>2014-11-05 00:28:59 -0600
committerA. Patrick Williams III <iawillia@us.ibm.com>2015-02-16 11:59:55 -0600
commit28253411cc210245e515edff5b166dd6114d711b (patch)
tree68885d83cc9359f0ca1016100d74fc8d1b12b542 /src/usr/diag/prdf/common/framework/rule/prdrExpr.H
parent0e58a17ace081132941307bb348edde68dea5279 (diff)
downloadtalos-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-xsrc/usr/diag/prdf/common/framework/rule/prdrExpr.H60
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
OpenPOWER on IntegriCloud