summaryrefslogtreecommitdiffstats
path: root/src/usr/diag/attn/attn.C
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr/diag/attn/attn.C')
-rw-r--r--src/usr/diag/attn/attn.C32
1 files changed, 31 insertions, 1 deletions
diff --git a/src/usr/diag/attn/attn.C b/src/usr/diag/attn/attn.C
index fed47c991..496b659e5 100644
--- a/src/usr/diag/attn/attn.C
+++ b/src/usr/diag/attn/attn.C
@@ -33,6 +33,7 @@
#include "attnlist.H"
#include "attntrace.H"
#include "attnsvc.H"
+#include "attnproc.H"
using namespace std;
using namespace PRDF;
@@ -108,7 +109,36 @@ errlHndl_t Resolver::resolve(
// in the ipoll mask register and query the proc & mem
// resolvers for active attentions
- return 0;
+ static ProcOps procOps;
+
+ errlHndl_t err = 0;
+
+ uint64_t ipollMaskScomData = 0;
+
+ do {
+
+ // get ipoll mask register content and decode
+ // unmasked attention types
+
+ err = getScom(i_proc, IPOLL::address, ipollMaskScomData);
+
+ if(err)
+ {
+ break;
+ }
+
+ // query the proc resolver for active attentions
+
+ err = procOps.resolve(i_proc, ipollMaskScomData, o_attentions);
+
+ if(err)
+ {
+ break;
+ }
+
+ } while(0);
+
+ return err;
}
ResolverWrapper & getResolverWrapper()
OpenPOWER on IntegriCloud