summaryrefslogtreecommitdiffstats
path: root/src/usr/targeting/common/utilFilter.C
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr/targeting/common/utilFilter.C')
-rw-r--r--src/usr/targeting/common/utilFilter.C32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/usr/targeting/common/utilFilter.C b/src/usr/targeting/common/utilFilter.C
index 2be7cdabb..3675dfb04 100644
--- a/src/usr/targeting/common/utilFilter.C
+++ b/src/usr/targeting/common/utilFilter.C
@@ -455,6 +455,38 @@ const Target * getParentChip( const Target * i_pChiplet )
return l_pChip;
}
+Target * getImmediateParentByAffinity(const Target * i_child )
+{
+ Target * l_parent = NULL;
+
+ // Create a vector of TARGETING::Target pointers
+ TARGETING::TargetHandleList l_chipList;
+
+ // Get parent
+ TARGETING::targetService().getAssociated(l_chipList, i_child,
+ TARGETING::TargetService::PARENT_BY_AFFINITY,
+ TARGETING::TargetService::IMMEDIATE, NULL);
+
+ if (l_chipList.size() == 1)
+ {
+ l_parent = l_chipList[0];
+ }
+ else if (l_chipList.size() == 0)
+ {
+ TARG_ERR("Failed to find a parent target for huid=%.8X",
+ TARGETING::get_huid(i_child));
+ }
+ else
+ {
+ TARG_ERR("Found %d parent targets for huid=%.8X, only expected to find 1",
+ l_chipList.size(),
+ TARGETING::get_huid(i_child));
+ }
+
+ return l_parent;
+}
+
+
Target * getParent( const Target * i_unit , TARGETING::TYPE &i_pType)
{
Target * l_parent = NULL;
OpenPOWER on IntegriCloud