TARGETING::TargetHandleList getProcNVDIMMs( TARGETING::Target * i_proc ) { TargetHandleList o_nvdimmList; TARGETING::ATTR_MODEL_type l_chipModel = i_proc->getAttr<TARGETING::ATTR_MODEL>(); // NVDIMM only present on NIMBUS systems if (l_chipModel == TARGETING::MODEL_NIMBUS) { TargetHandleList l_dimmTargetList; getChildAffinityTargets(l_dimmTargetList, i_proc, CLASS_NA, TYPE_DIMM); for (TargetHandleList::iterator it = l_dimmTargetList.begin(); it != l_dimmTargetList.end(); ++it) { TARGETING::Target* l_dimm = *it; if (TARGETING::isNVDIMM(l_dimm)) { // Found a valid NVDIMM o_nvdimmList.push_back(l_dimm); } } } return o_nvdimmList; }
uint16_t hdatCalcMaxTpmsPerNode() { size_t l_maxTpms = 0; // calculate max # of TPMs per node // look for class ENC type NODE and class chip TPM to find TPMs TARGETING::TargetHandleList l_nodeEncList; getEncResources(l_nodeEncList, TARGETING::TYPE_NODE, TARGETING::UTIL_FILTER_ALL); // loop thru the nodes and check number of TPMs std::for_each(l_nodeEncList.begin(), l_nodeEncList.end(), [&l_maxTpms](const TARGETING::Target* const i_pNode) { // for this Node, get a list of tpms TARGETING::TargetHandleList l_tpmChipList; getChildAffinityTargets ( l_tpmChipList, i_pNode, TARGETING::CLASS_CHIP, TARGETING::TYPE_TPM, false ); l_maxTpms = std::max(l_maxTpms, l_tpmChipList.size()); } ); return l_maxTpms; }
TargetHandle_t TargetServiceImpl::getMembuf( TargetHandle_t i_mcs) { TargetHandle_t membuf = NULL; TargetHandleList list; getChildAffinityTargets(list, i_mcs, CLASS_CHIP, TYPE_MEMBUF); if(list.size() == 1) { membuf = list[0]; } return membuf; }