diff options
Diffstat (limited to 'src/usr/diag/attn/test/attnfakeprd.C')
| -rw-r--r-- | src/usr/diag/attn/test/attnfakeprd.C | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/src/usr/diag/attn/test/attnfakeprd.C b/src/usr/diag/attn/test/attnfakeprd.C new file mode 100644 index 000000000..058af49a3 --- /dev/null +++ b/src/usr/diag/attn/test/attnfakeprd.C @@ -0,0 +1,93 @@ +/* IBM_PROLOG_BEGIN_TAG + * This is an automatically generated prolog. + * + * $Source: src/usr/diag/attn/test/attnfakeprd.C $ + * + * IBM CONFIDENTIAL + * + * COPYRIGHT International Business Machines Corp. 2012 + * + * p1 + * + * Object Code Only (OCO) source materials + * Licensed Internal Code Source Materials + * IBM HostBoot Licensed Internal Code + * + * The source code for this program is not published or other- + * wise divested of its trade secrets, irrespective of what has + * been deposited with the U.S. Copyright Office. + * + * Origin: 30 + * + * IBM_PROLOG_END_TAG + */ +/** + * @file attnfakeprd.C + * + * @brief HBATTN fake PRD class method definitions. + */ + +#include "attnfakeprd.H" +#include "attnfakesys.H" +#include "../attnops.H" +#include "../attnlist.H" +#include <sys/time.h> + +using namespace PRDF; + +namespace ATTN +{ + +struct Clear +{ + Clear(FakeSystem & i_system) : iv_system(&i_system), err(0) {} + + void operator()(const Attention & i_attention) + { + if(!err) + { + AttnData d; + + i_attention.getData(d); + + // sleep for a random interval to simulate + // real prd processing time + + nanosleep(0, randint(TEN_CTX_SWITCHES_NS, TEN_CTX_SWITCHES_NS * 10)); + + uint64_t behavior = randint(0, 2); + + switch(behavior) + { + case 1: + + // periodically do nothing to force the main service + // to see attentions that were not cleared and call PRD + // again + + break; + + default: + + err = iv_system->clearAllAttentions(d); + + break; + } + } + } + + FakeSystem * iv_system; + errlHndl_t err; +}; + +errlHndl_t FakePrd::callPrd(const AttentionList & i_attentions) +{ + return i_attentions.forEach(Clear(*iv_system)).err; +} + +FakePrd::FakePrd(FakeSystem & i_system) : + iv_system(&i_system) +{ + +} +} |

