From 31998dac459abd6e49857697b07cbce8af43cadf Mon Sep 17 00:00:00 2001 From: Stephen Cprek Date: Tue, 1 Apr 2014 13:39:07 -0500 Subject: Changed _invokeDeconfigureAssocProc to push an instance directly Before invoke declared new instances causing too much memory alloc work. Also short circuited "found chip" loop Change-Id: I60c23e8beff72fca8174808aff3b9bb70a5aa5b6 RTC: 86191 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/10034 Tested-by: Jenkins Server Reviewed-by: Brian H. Horton Reviewed-by: Donald E. Dahle Reviewed-by: A. Patrick Williams III --- src/usr/hwas/common/deconfigGard.C | 240 +++++---- src/usr/hwas/test/hwasGardTest.H | 1013 +++++++++++++++++------------------- 2 files changed, 604 insertions(+), 649 deletions(-) (limited to 'src/usr') diff --git a/src/usr/hwas/common/deconfigGard.C b/src/usr/hwas/common/deconfigGard.C index ea0b6d51b..a89f186ed 100644 --- a/src/usr/hwas/common/deconfigGard.C +++ b/src/usr/hwas/common/deconfigGard.C @@ -734,7 +734,7 @@ errlHndl_t DeconfigGard::_invokeDeconfigureAssocProc() // Define vector of ProcInfo structs to be used by // _deconfigAssocProc algorithm. Declared here so // "delete" can be used outside of do {...} while(0) - std::vector l_procInfo; + ProcInfoVector l_procInfo; do { @@ -798,37 +798,37 @@ errlHndl_t DeconfigGard::_invokeDeconfigureAssocProc() l_procsIter != l_procs.end(); ++l_procsIter) { - ProcInfo * l_ProcInfo = new ProcInfo(); + ProcInfo l_ProcInfo = ProcInfo(); // Iterate through present procs and populate structs in l_procInfo // Target pointer - l_ProcInfo->iv_pThisProc = + l_ProcInfo.iv_pThisProc = *l_procsIter; // HUID - l_ProcInfo->procHUID = + l_ProcInfo.procHUID = (*l_procsIter)->getAttr(); // FABRIC_NODE_ID - l_ProcInfo->procFabricNode = + l_ProcInfo.procFabricNode = (*l_procsIter)->getAttr(); // FABRIC_CHIP_ID - l_ProcInfo->procFabricChip = + l_ProcInfo.procFabricChip = (*l_procsIter)->getAttr(); // HWAS state - l_ProcInfo->iv_deconfigured = + l_ProcInfo.iv_deconfigured = !(isFunctional(*l_procsIter)); // iv_isMaster if (*l_procsIter == l_pMasterProcTarget) { - l_ProcInfo->iv_isMaster = true; + l_ProcInfo.iv_isMaster = true; } else { - l_ProcInfo->iv_isMaster = false; + l_ProcInfo.iv_isMaster = false; } l_procInfo.push_back(l_ProcInfo); } // Iterate through l_procInfo and populate child bus endpoint // chiplet information - for (std::vector::const_iterator + for (ProcInfoVector::iterator l_procInfoIter = l_procInfo.begin(); l_procInfoIter != l_procInfo.end(); ++l_procInfoIter) @@ -836,7 +836,7 @@ errlHndl_t DeconfigGard::_invokeDeconfigureAssocProc() // Populate vector of bus endpoints associated with this proc TargetHandleList l_busChiplets; targetService().getAssociated(l_busChiplets, - (*l_procInfoIter)->iv_pThisProc, + (*l_procInfoIter).iv_pThisProc, TargetService::CHILD, TargetService::IMMEDIATE, &busses); @@ -848,7 +848,7 @@ errlHndl_t DeconfigGard::_invokeDeconfigureAssocProc() uint8_t aBusIndex = 0; // Iterate through bus endpoint chiplets - for (TargetHandleList::iterator + for (TargetHandleList::const_iterator l_busIter = l_busChiplets.begin(); l_busIter != l_busChiplets.end(); ++l_busIter) @@ -874,7 +874,7 @@ errlHndl_t DeconfigGard::_invokeDeconfigureAssocProc() // Get parent chip from xbus chiplet l_pPeerProcTarget = getParentChip(l_pDstTarget); // Find matching ProcInfo struct - for (std::vector::const_iterator + for (ProcInfoVector::iterator l_matchProcInfoIter = l_procInfo.begin(); l_matchProcInfoIter != l_procInfo.end(); ++l_matchProcInfoIter) @@ -882,27 +882,27 @@ errlHndl_t DeconfigGard::_invokeDeconfigureAssocProc() // If Peer proc target matches this ProcInfo struct's // Identifier target if (l_pPeerProcTarget == - (*l_matchProcInfoIter)->iv_pThisProc) + (*l_matchProcInfoIter).iv_pThisProc) { // Update struct of current proc to point to this // struct, and also handle iv_A/XDeconfigured[] // and increment appropriate index: if (TYPE_XBUS == (*l_busIter)->getAttr()) { - (*l_procInfoIter)->iv_pXProcs[xBusIndex] = - *l_matchProcInfoIter; + (*l_procInfoIter).iv_pXProcs[xBusIndex] = + &(*l_matchProcInfoIter); // HWAS state - (*l_procInfoIter)->iv_XDeconfigured[xBusIndex] = + (*l_procInfoIter).iv_XDeconfigured[xBusIndex] = !(isFunctional(*l_busIter)); xBusIndex++; } else if (TYPE_ABUS == (*l_busIter)-> getAttr()) { - (*l_procInfoIter)->iv_pAProcs[aBusIndex] = - *l_matchProcInfoIter; + (*l_procInfoIter).iv_pAProcs[aBusIndex] = + &(*l_matchProcInfoIter); // HWAS state - (*l_procInfoIter)->iv_ADeconfigured[aBusIndex] = + (*l_procInfoIter).iv_ADeconfigured[aBusIndex] = !(isFunctional(*l_busIter)); aBusIndex++; } @@ -921,28 +921,26 @@ errlHndl_t DeconfigGard::_invokeDeconfigureAssocProc() } // Iterate through l_procInfo and deconfigure any procs // which _deconfigureAssocProc marked for deconfiguration - for (std::vector::const_iterator + for (ProcInfoVector::const_iterator l_procInfoIter = l_procInfo.begin(); l_procInfoIter != l_procInfo.end(); ++l_procInfoIter) { - if ((*l_procInfoIter)->iv_deconfigured && - (isFunctional((*l_procInfoIter)->iv_pThisProc))) + if ((*l_procInfoIter).iv_deconfigured && + (isFunctional((*l_procInfoIter).iv_pThisProc))) { // Deconfigure marked procs HWAS_INF("_invokeDeconfigureAssocProc is " "deconfiguring proc: %.8X", - get_huid((*l_procInfoIter)->iv_pThisProc)); - _deconfigureTarget(*(*l_procInfoIter)-> + get_huid((*l_procInfoIter).iv_pThisProc)); + _deconfigureTarget(*(*l_procInfoIter). iv_pThisProc, DECONFIGURED_BY_BUS_DECONFIG); - _deconfigureByAssoc(*(*l_procInfoIter)-> + _deconfigureByAssoc(*(*l_procInfoIter). iv_pThisProc, DECONFIGURED_BY_BUS_DECONFIG); } } }while(0); - // Free previously allocated memory - while(!l_procInfo.empty()) delete l_procInfo.back(), - l_procInfo.pop_back(); + return l_pErr; } @@ -1453,8 +1451,7 @@ void DeconfigGard::processDeferredDeconfig() } // processDeferredDeconfig //****************************************************************************** -errlHndl_t DeconfigGard::_deconfigureAssocProc( - std::vector &io_procInfo) +errlHndl_t DeconfigGard::_deconfigureAssocProc(ProcInfoVector &io_procInfo) { // Defined for possible use in future applications errlHndl_t l_errlHdl = NULL; @@ -1468,40 +1465,40 @@ errlHndl_t DeconfigGard::_deconfigureAssocProc( // Find master proc ProcInfo * l_pMasterProcInfo = NULL; - for (std::vector::const_iterator + for (ProcInfoVector::iterator l_procInfoIter = io_procInfo.begin(); l_procInfoIter != io_procInfo.end(); ++l_procInfoIter) { - if ((*l_procInfoIter)->iv_isMaster) + if ((*l_procInfoIter).iv_isMaster) { // Save for subsequent use - l_pMasterProcInfo = *l_procInfoIter; + l_pMasterProcInfo = &(*l_procInfoIter); // Iterate through bus endpoints, and if deconfigured, // mark peer proc to be deconfigured for (uint8_t i = 0; i < NUM_A_BUSES; i++) { - if ((*l_procInfoIter)->iv_ADeconfigured[i]) + if ((*l_procInfoIter).iv_ADeconfigured[i]) { HWAS_INF("deconfigureAssocProc marked proc: " "%.8X for deconfiguration " "due to deconfigured abus endpoint " "on master proc.", - (*l_procInfoIter)->iv_pAProcs[i]->procHUID); - (*l_procInfoIter)->iv_pAProcs[i]-> + (*l_procInfoIter).iv_pAProcs[i]->procHUID); + (*l_procInfoIter).iv_pAProcs[i]-> iv_deconfigured = true; } } for (uint8_t i = 0; i < NUM_X_BUSES; i++) { - if ((*l_procInfoIter)->iv_XDeconfigured[i]) + if ((*l_procInfoIter).iv_XDeconfigured[i]) { HWAS_INF("deconfigureAssocProc marked proc: " "%.8X for deconfiguration " "due to deconfigured xbus endpoint " "on master proc.", - (*l_procInfoIter)->iv_pXProcs[i]->procHUID); - (*l_procInfoIter)->iv_pXProcs[i]-> + (*l_procInfoIter).iv_pXProcs[i]->procHUID); + (*l_procInfoIter).iv_pXProcs[i]-> iv_deconfigured = true; } } @@ -1517,18 +1514,18 @@ errlHndl_t DeconfigGard::_deconfigureAssocProc( // Iterate through procs, and mark deconfigured any // non-master proc which has more than one bus endpoint // chiplet deconfigured - for (std::vector::const_iterator + for (ProcInfoVector::iterator l_procInfoIter = io_procInfo.begin(); l_procInfoIter != io_procInfo.end(); ++l_procInfoIter) { // Don't deconfigure master proc - if ((*l_procInfoIter)->iv_isMaster) + if ((*l_procInfoIter).iv_isMaster) { continue; } // Don't examine previously marked proc - if ((*l_procInfoIter)->iv_deconfigured) + if ((*l_procInfoIter).iv_deconfigured) { continue; } @@ -1538,12 +1535,12 @@ errlHndl_t DeconfigGard::_deconfigureAssocProc( // which are deconfigured for (uint8_t i = 0; i < NUM_A_BUSES; i++) { - if ((*l_procInfoIter)->iv_ADeconfigured[i]) + if ((*l_procInfoIter).iv_ADeconfigured[i]) { // Only increment deconfigBusCounter if peer proc exists // and is functional - if((*l_procInfoIter)->iv_pAProcs[i] && - (!(*l_procInfoIter)->iv_pAProcs[i]->iv_deconfigured)) + if((*l_procInfoIter).iv_pAProcs[i] && + (!(*l_procInfoIter).iv_pAProcs[i]->iv_deconfigured)) { deconfigBusCounter++; } @@ -1551,12 +1548,12 @@ errlHndl_t DeconfigGard::_deconfigureAssocProc( } for (uint8_t i = 0; i < NUM_X_BUSES; i++) { - if ((*l_procInfoIter)->iv_XDeconfigured[i]) + if ((*l_procInfoIter).iv_XDeconfigured[i]) { // Only increment deconfigBusCounter if peer proc exists // and is functional - if((*l_procInfoIter)->iv_pXProcs[i] && - (!(*l_procInfoIter)->iv_pXProcs[i]->iv_deconfigured)) + if((*l_procInfoIter).iv_pXProcs[i] && + (!(*l_procInfoIter).iv_pXProcs[i]->iv_deconfigured)) { deconfigBusCounter++; } @@ -1570,9 +1567,9 @@ errlHndl_t DeconfigGard::_deconfigureAssocProc( "%.8X for deconfiguration " "due to %d deconfigured bus endpoints " "on this proc.", - (*l_procInfoIter)->procHUID, + (*l_procInfoIter).procHUID, deconfigBusCounter); - (*l_procInfoIter)->iv_deconfigured = true; + (*l_procInfoIter).iv_deconfigured = true; } }// STEP 2 @@ -1583,44 +1580,44 @@ errlHndl_t DeconfigGard::_deconfigureAssocProc( // mark proc with higher HUID to be deconfigured. // Iterate through procs and check xbus chiplets - for (std::vector::const_iterator + for (ProcInfoVector::iterator l_procInfoIter = io_procInfo.begin(); l_procInfoIter != io_procInfo.end(); ++l_procInfoIter) { // Master proc handled in STEP 1 - if ((*l_procInfoIter)->iv_isMaster) + if ((*l_procInfoIter).iv_isMaster) { continue; } // Don't examine previously marked proc - if ((*l_procInfoIter)->iv_deconfigured) + if ((*l_procInfoIter).iv_deconfigured) { continue; } // If current proc is on master logical node if (l_pMasterProcInfo->procFabricNode == - (*l_procInfoIter)->procFabricNode) + (*l_procInfoIter).procFabricNode) { // Check xbus endpoints for (uint8_t i = 0; i < NUM_X_BUSES; i++) { // If endpoint deconfigured and endpoint peer proc is // not already marked deconfigured - if (((*l_procInfoIter)->iv_XDeconfigured[i]) && - (!((*l_procInfoIter)->iv_pXProcs[i]->iv_deconfigured))) + if (((*l_procInfoIter).iv_XDeconfigured[i]) && + (!((*l_procInfoIter).iv_pXProcs[i]->iv_deconfigured))) { // Mark proc with higher HUID to be deconfigured - if ((*l_procInfoIter)->iv_pXProcs[i]->procHUID > - (*l_procInfoIter)->procHUID) + if ((*l_procInfoIter).iv_pXProcs[i]->procHUID > + (*l_procInfoIter).procHUID) { HWAS_INF("deconfigureAssocProc marked remote proc:" " %.8X for deconfiguration " "due to higher HUID than peer " "proc on same master-containing logical " "node.", - (*l_procInfoIter)->iv_pXProcs[i]->procHUID); - (*l_procInfoIter)->iv_pXProcs[i]-> + (*l_procInfoIter).iv_pXProcs[i]->procHUID); + (*l_procInfoIter).iv_pXProcs[i]-> iv_deconfigured = true; } else @@ -1630,8 +1627,8 @@ errlHndl_t DeconfigGard::_deconfigureAssocProc( "due to higher HUID than peer " "proc on same master-containing logical " "node.", - (*l_procInfoIter)->procHUID); - (*l_procInfoIter)->iv_deconfigured = true; + (*l_procInfoIter).procHUID); + (*l_procInfoIter).iv_deconfigured = true; } } } @@ -1649,19 +1646,19 @@ errlHndl_t DeconfigGard::_deconfigureAssocProc( // Iterate through procs and, if in non-master // logical node, check xbus chiplets - for (std::vector::const_iterator + for (ProcInfoVector::iterator l_procInfoIter = io_procInfo.begin(); l_procInfoIter != io_procInfo.end(); ++l_procInfoIter) { // Don't examine previously marked proc - if ((*l_procInfoIter)->iv_deconfigured) + if ((*l_procInfoIter).iv_deconfigured) { continue; } // Don't examine procs on master logical node if (l_pMasterProcInfo->procFabricNode == - (*l_procInfoIter)->procFabricNode) + (*l_procInfoIter).procFabricNode) { continue; } @@ -1671,27 +1668,27 @@ errlHndl_t DeconfigGard::_deconfigureAssocProc( { // If endpoint deconfigured and endpoint peer proc // is not already marked deconfigured - if (((*l_procInfoIter)->iv_XDeconfigured[i]) && - (!((*l_procInfoIter)->iv_pXProcs[i]->iv_deconfigured))) + if (((*l_procInfoIter).iv_XDeconfigured[i]) && + (!((*l_procInfoIter).iv_pXProcs[i]->iv_deconfigured))) { // Variable to indicate If this step results in // finding a proc to mark deconfigured bool l_chipIDmatch = false; // Iterate through procs and examine ones found to // be on the master-containing logical node - for (std::vector::const_iterator + for (ProcInfoVector::const_iterator l_mNodeProcInfoIter = io_procInfo.begin(); l_mNodeProcInfoIter != io_procInfo.end(); ++l_mNodeProcInfoIter) { if (l_pMasterProcInfo->procFabricNode == - (*l_mNodeProcInfoIter)->procFabricNode) + (*l_mNodeProcInfoIter).procFabricNode) { // If master logical node proc deconfigured with // same FABRIC_CHIP_ID as current proc - if (((*l_mNodeProcInfoIter)->iv_deconfigured) && - ((*l_mNodeProcInfoIter)->procFabricChip == - (*l_procInfoIter)->procFabricChip)) + if (((*l_mNodeProcInfoIter).iv_deconfigured) && + ((*l_mNodeProcInfoIter).procFabricChip == + (*l_procInfoIter).procFabricChip)) { // Mark current proc to be deconfigured // and set chipIDmatch @@ -1700,19 +1697,20 @@ errlHndl_t DeconfigGard::_deconfigureAssocProc( "due to same position deconfigured " "proc on master-containing logical " "node.", - (*l_procInfoIter)->procHUID); - (*l_procInfoIter)->iv_deconfigured =\ + (*l_procInfoIter).procHUID); + (*l_procInfoIter).iv_deconfigured =\ true; l_chipIDmatch = true; + break; } // If master logical node proc deconfigured with // same FABRIC_CHIP_ID as current proc's xbus peer // proc - else if (((*l_mNodeProcInfoIter)-> + else if (((*l_mNodeProcInfoIter). iv_deconfigured) && - ((*l_mNodeProcInfoIter)-> + ((*l_mNodeProcInfoIter). procFabricChip == - (*l_procInfoIter)->iv_pXProcs[i]-> + (*l_procInfoIter).iv_pXProcs[i]-> procFabricChip)) { // Mark peer proc to be deconfigured @@ -1722,10 +1720,11 @@ errlHndl_t DeconfigGard::_deconfigureAssocProc( "due to same position deconfigured " "proc on master-containing logical " "node.", - (*l_procInfoIter)->iv_pXProcs[i]->procHUID); - (*l_procInfoIter)->iv_pXProcs[i]-> + (*l_procInfoIter).iv_pXProcs[i]->procHUID); + (*l_procInfoIter).iv_pXProcs[i]-> iv_deconfigured = true; l_chipIDmatch = true; + break; } } } @@ -1733,16 +1732,16 @@ errlHndl_t DeconfigGard::_deconfigureAssocProc( if (!(l_chipIDmatch)) { // Deconfigure proc with higher HUID - if ((*l_procInfoIter)->procHUID > - (*l_procInfoIter)->iv_pXProcs[i]->procHUID) + if ((*l_procInfoIter).procHUID > + (*l_procInfoIter).iv_pXProcs[i]->procHUID) { HWAS_INF("deconfigureAssocProc marked proc:" " %.8X for deconfiguration " "due to higher HUID than peer " "proc on same non master-containing logical " "node.", - (*l_procInfoIter)->procHUID); - (*l_procInfoIter)->iv_deconfigured = + (*l_procInfoIter).procHUID); + (*l_procInfoIter).iv_deconfigured = true; } else @@ -1752,8 +1751,8 @@ errlHndl_t DeconfigGard::_deconfigureAssocProc( "due to higher HUID than peer " "proc on same non master-containing logical " "node.", - (*l_procInfoIter)->iv_pXProcs[i]->procHUID); - (*l_procInfoIter)->iv_pXProcs[i]-> + (*l_procInfoIter).iv_pXProcs[i]->procHUID); + (*l_procInfoIter).iv_pXProcs[i]-> iv_deconfigured = true; } } @@ -1768,18 +1767,18 @@ errlHndl_t DeconfigGard::_deconfigureAssocProc( // abus peer proc. // Iterate through procs and check for deconfigured abus endpoints - for (std::vector::const_iterator + for (ProcInfoVector::iterator l_procInfoIter = io_procInfo.begin(); l_procInfoIter != io_procInfo.end(); ++l_procInfoIter) { // Master proc handled in STEP 1 - if ((*l_procInfoIter)->iv_isMaster) + if ((*l_procInfoIter).iv_isMaster) { continue; } // Don't examine procs which are already marked - if ((*l_procInfoIter)->iv_deconfigured) + if ((*l_procInfoIter).iv_deconfigured) { continue; } @@ -1789,18 +1788,18 @@ errlHndl_t DeconfigGard::_deconfigureAssocProc( { // If endpoint deconfigured and endpoint peer proc // is not already marked deconfigured - if (((*l_procInfoIter)->iv_ADeconfigured[i]) && - (!((*l_procInfoIter)->iv_pAProcs[i]->iv_deconfigured))) + if (((*l_procInfoIter).iv_ADeconfigured[i]) && + (!((*l_procInfoIter).iv_pAProcs[i]->iv_deconfigured))) { // Check XBUS peer bool l_xbusPeerProcDeconfigured = false; for (uint8_t j = 0; j < NUM_X_BUSES; j++) { // If peer proc exists - if ((*l_procInfoIter)->iv_pXProcs[j]) + if ((*l_procInfoIter).iv_pXProcs[j]) { // If xbus peer proc deconfigured - if ((*l_procInfoIter)->iv_pXProcs[j]-> + if ((*l_procInfoIter).iv_pXProcs[j]-> iv_deconfigured) { // Set xbusPeerProcDeconfigured and deconfigure @@ -1808,9 +1807,9 @@ errlHndl_t DeconfigGard::_deconfigureAssocProc( HWAS_INF("deconfigureAssocProc marked proc:" " %.8X for deconfiguration " "due to deconfigured xbus peer proc.", - (*l_procInfoIter)->procHUID); + (*l_procInfoIter).procHUID); l_xbusPeerProcDeconfigured = true; - (*l_procInfoIter)->iv_deconfigured = true; + (*l_procInfoIter).iv_deconfigured = true; break; } } @@ -1822,8 +1821,8 @@ errlHndl_t DeconfigGard::_deconfigureAssocProc( HWAS_INF("deconfigureAssocProc marked " "remote proc: %.8X for deconfiguration " "due to functional xbus peer proc.", - (*l_procInfoIter)->iv_pAProcs[i]->procHUID); - (*l_procInfoIter)->iv_pAProcs[i]-> + (*l_procInfoIter).iv_pAProcs[i]->procHUID); + (*l_procInfoIter).iv_pAProcs[i]-> iv_deconfigured = true; } } @@ -1841,8 +1840,7 @@ errlHndl_t DeconfigGard::_deconfigureAssocProc( //****************************************************************************** -errlHndl_t DeconfigGard::_symmetryValidation( - std::vector &io_procInfo) +errlHndl_t DeconfigGard::_symmetryValidation(ProcInfoVector &io_procInfo) { // Defined for possible use in future applications errlHndl_t l_errlHdl = NULL; @@ -1858,16 +1856,16 @@ errlHndl_t DeconfigGard::_symmetryValidation( // Find master proc ProcInfo * l_pMasterProcInfo = NULL; - for (std::vector::const_iterator + for (ProcInfoVector::iterator l_procInfoIter = io_procInfo.begin(); l_procInfoIter != io_procInfo.end(); ++l_procInfoIter) { // If master proc - if ((*l_procInfoIter)->iv_isMaster) + if ((*l_procInfoIter).iv_isMaster) { // Save for subsequent use - l_pMasterProcInfo = *l_procInfoIter; + l_pMasterProcInfo = &(*l_procInfoIter); break; } } @@ -1875,36 +1873,36 @@ errlHndl_t DeconfigGard::_symmetryValidation( HWAS_ASSERT(l_pMasterProcInfo, "HWAS _symmetryValidation:" "Master proc not found"); // Iterate through procs and check if in master logical node - for (std::vector::const_iterator + for (ProcInfoVector::const_iterator l_procInfoIter = io_procInfo.begin(); l_procInfoIter != io_procInfo.end(); ++l_procInfoIter) { // Skip master proc - if ((*l_procInfoIter)->iv_isMaster) + if ((*l_procInfoIter).iv_isMaster) { continue; } // If current proc is on master logical node // and marked as deconfigured if ((l_pMasterProcInfo->procFabricNode == - (*l_procInfoIter)->procFabricNode) && - ((*l_procInfoIter)->iv_deconfigured)) + (*l_procInfoIter).procFabricNode) && + ((*l_procInfoIter).iv_deconfigured)) { // Iterate through procs and mark any same- // position procs as deconfigured - for (std::vector::const_iterator + for (ProcInfoVector::iterator l_posProcInfoIter = io_procInfo.begin(); l_posProcInfoIter != io_procInfo.end(); ++l_posProcInfoIter) { - if ((*l_procInfoIter)->procFabricChip == - (*l_posProcInfoIter)->procFabricChip) + if ((*l_procInfoIter).procFabricChip == + (*l_posProcInfoIter).procFabricChip) { HWAS_INF("symmetryValidation step 1 marked proc: " "%.8X for deconfiguration.", - (*l_posProcInfoIter)->procHUID); - (*l_posProcInfoIter)->iv_deconfigured = true; + (*l_posProcInfoIter).procHUID); + (*l_posProcInfoIter).iv_deconfigured = true; } } } @@ -1918,17 +1916,17 @@ errlHndl_t DeconfigGard::_symmetryValidation( // Iterate through procs, if marked deconfigured, compare chip // position to functional chip on master node. - for (std::vector::const_iterator + for (ProcInfoVector::const_iterator l_procInfoIter = io_procInfo.begin(); l_procInfoIter != io_procInfo.end(); ++l_procInfoIter) { // If proc is marked deconfigured - if ((*l_procInfoIter)->iv_deconfigured) + if ((*l_procInfoIter).iv_deconfigured) { // Iterate through procs, examining those on // the master logical node - for (std::vector::const_iterator + for (ProcInfoVector::const_iterator l_mNodeProcInfoIter = io_procInfo.begin(); l_mNodeProcInfoIter != io_procInfo.end(); ++l_mNodeProcInfoIter) @@ -1937,23 +1935,23 @@ errlHndl_t DeconfigGard::_symmetryValidation( // functional, and matches the position of the deconfigured // proc from the outer loop if ((l_pMasterProcInfo->procFabricNode == - (*l_mNodeProcInfoIter)->procFabricNode) && - (!((*l_mNodeProcInfoIter)->iv_deconfigured)) && - ((*l_mNodeProcInfoIter)->procFabricChip == - (*l_procInfoIter)->procFabricChip)) + (*l_mNodeProcInfoIter).procFabricNode) && + (!((*l_mNodeProcInfoIter).iv_deconfigured)) && + ((*l_mNodeProcInfoIter).procFabricChip == + (*l_procInfoIter).procFabricChip)) { // Find xbus peer proc to mark deconfigured for (uint8_t i = 0; i < NUM_X_BUSES; i++) { // If xbus peer proc exists, mark it - if ((*l_procInfoIter)->iv_pXProcs[i]) + if ((*l_procInfoIter).iv_pXProcs[i]) { HWAS_INF("symmetryValidation step 2 " "marked proc: %.8X for " "deconfiguration.", - (*l_procInfoIter)-> + (*l_procInfoIter). iv_pXProcs[i]->procHUID); - (*l_procInfoIter)->iv_pXProcs[i]-> + (*l_procInfoIter).iv_pXProcs[i]-> iv_deconfigured = true; } } diff --git a/src/usr/hwas/test/hwasGardTest.H b/src/usr/hwas/test/hwasGardTest.H index 96d0f0c3f..5ed0c50a9 100644 --- a/src/usr/hwas/test/hwasGardTest.H +++ b/src/usr/hwas/test/hwasGardTest.H @@ -146,6 +146,7 @@ public: /** * @brief Test Deconfiguring a Target directly */ + void testDeconfigure3() { TS_TRACE(INFO_MRK "testDeconfigure3: Started"); @@ -1786,72 +1787,69 @@ public: errlHndl_t l_pErr = NULL; // User-defined number of procs - uint8_t NUM_PROCS = 4; + size_t NUM_PROCS = 4; // Define and populate vector - std::vector l_tuletaProcs(NUM_PROCS); - - for (uint8_t i = 0; i < NUM_PROCS; i++) - { - l_tuletaProcs[i] = new DeconfigGard::ProcInfo(); - } + DeconfigGard::ProcInfoVector l_tuletaProcs; + DeconfigGard::ProcInfo l_ProcInfo = DeconfigGard::ProcInfo(); + l_tuletaProcs.insert(l_tuletaProcs.begin(), NUM_PROCS, l_ProcInfo); // Set proc options // Proc0: - l_tuletaProcs[0]->iv_pThisProc = NULL; // Target * - l_tuletaProcs[0]->procHUID = 0; // HUID - l_tuletaProcs[0]->procFabricNode = 0; // FABRIC_NODE_ID - l_tuletaProcs[0]->procFabricChip = 0; // FABRIC_CHIP_ID - l_tuletaProcs[0]->iv_isMaster = true; // Master proc - l_tuletaProcs[0]->iv_deconfigured = false; // HWAS state + l_tuletaProcs[0].iv_pThisProc = NULL; // Target * + l_tuletaProcs[0].procHUID = 0; // HUID + l_tuletaProcs[0].procFabricNode = 0; // FABRIC_NODE_ID + l_tuletaProcs[0].procFabricChip = 0; // FABRIC_CHIP_ID + l_tuletaProcs[0].iv_isMaster = true; // Master proc + l_tuletaProcs[0].iv_deconfigured = false; // HWAS state // ABus links and states // abus1 and 2 linked to proc2 - l_tuletaProcs[0]->iv_pAProcs[0] = l_tuletaProcs[2]; - l_tuletaProcs[0]->iv_pAProcs[1] = l_tuletaProcs[2]; + l_tuletaProcs[0].iv_pAProcs[0] = &l_tuletaProcs[2]; + l_tuletaProcs[0].iv_pAProcs[1] = &l_tuletaProcs[2]; // abus1 endpoint deconfigured - l_tuletaProcs[0]->iv_ADeconfigured[0] = true; + l_tuletaProcs[0].iv_ADeconfigured[0] = true; // XBus links and states - l_tuletaProcs[0]->iv_pXProcs[0] = l_tuletaProcs[1]; + l_tuletaProcs[0].iv_pXProcs[0] = &l_tuletaProcs[1]; // Proc1: - l_tuletaProcs[1]->iv_pThisProc = NULL; // Target * - l_tuletaProcs[1]->procHUID = 1; // HUID - l_tuletaProcs[1]->procFabricNode = 0; // FABRIC_NODE_ID - l_tuletaProcs[1]->procFabricChip = 1; // FABRIC_CHIP_ID - l_tuletaProcs[1]->iv_isMaster = false; // Not master proc - l_tuletaProcs[1]->iv_deconfigured = false; // HWAS state + l_tuletaProcs[1].iv_pThisProc = NULL; // Target * + l_tuletaProcs[1].procHUID = 1; // HUID + l_tuletaProcs[1].procFabricNode = 0; // FABRIC_NODE_ID + l_tuletaProcs[1].procFabricChip = 1; // FABRIC_CHIP_ID + l_tuletaProcs[1].iv_isMaster = false; // Not master proc + l_tuletaProcs[1].iv_deconfigured = false; // HWAS state // ABus links and states - l_tuletaProcs[1]->iv_pAProcs[0] = l_tuletaProcs[3]; - l_tuletaProcs[1]->iv_pAProcs[1] = l_tuletaProcs[3]; + l_tuletaProcs[1].iv_pAProcs[0] = &l_tuletaProcs[3]; + l_tuletaProcs[1].iv_pAProcs[1] = &l_tuletaProcs[3]; // XBus links and states - l_tuletaProcs[1]->iv_pXProcs[0] = l_tuletaProcs[0]; + l_tuletaProcs[1].iv_pXProcs[0] = &l_tuletaProcs[0]; // Proc2: - l_tuletaProcs[2]->iv_pThisProc = NULL; // Target * - l_tuletaProcs[2]->procHUID = 2; // HUID - l_tuletaProcs[2]->procFabricNode = 1; // FABRIC_NODE_ID - l_tuletaProcs[2]->procFabricChip = 0; // FABRIC_CHIP_ID - l_tuletaProcs[2]->iv_isMaster = false; // Not master proc - l_tuletaProcs[2]->iv_deconfigured = false; // HWAS state + l_tuletaProcs[2].iv_pThisProc = NULL; // Target * + l_tuletaProcs[2].procHUID = 2; // HUID + l_tuletaProcs[2].procFabricNode = 1; // FABRIC_NODE_ID + l_tuletaProcs[2].procFabricChip = 0; // FABRIC_CHIP_ID + l_tuletaProcs[2].iv_isMaster = false; // Not master proc + l_tuletaProcs[2].iv_deconfigured = false; // HWAS state // ABus links and states - l_tuletaProcs[2]->iv_pAProcs[0] = l_tuletaProcs[0]; - l_tuletaProcs[2]->iv_pAProcs[1] = l_tuletaProcs[0]; - l_tuletaProcs[2]->iv_ADeconfigured[0] = true; + l_tuletaProcs[2].iv_pAProcs[0] = &l_tuletaProcs[0]; + l_tuletaProcs[2].iv_pAProcs[1] = &l_tuletaProcs[0]; + l_tuletaProcs[2].iv_ADeconfigured[0] = true; // XBus links and states - l_tuletaProcs[2]->iv_pXProcs[0] = l_tuletaProcs[3]; + l_tuletaProcs[2].iv_pXProcs[0] = &l_tuletaProcs[3]; // Proc3: - l_tuletaProcs[3]->iv_pThisProc = NULL; // Target * - l_tuletaProcs[3]->procHUID = 3; // HUID - l_tuletaProcs[3]->procFabricNode = 1; // FABRIC_NODE_ID - l_tuletaProcs[3]->procFabricChip = 1; // FABRIC_CHIP_ID - l_tuletaProcs[3]->iv_isMaster = false; // Not master proc - l_tuletaProcs[3]->iv_deconfigured = false; // HWAS state + l_tuletaProcs[3].iv_pThisProc = NULL; // Target * + l_tuletaProcs[3].procHUID = 3; // HUID + l_tuletaProcs[3].procFabricNode = 1; // FABRIC_NODE_ID + l_tuletaProcs[3].procFabricChip = 1; // FABRIC_CHIP_ID + l_tuletaProcs[3].iv_isMaster = false; // Not master proc + l_tuletaProcs[3].iv_deconfigured = false; // HWAS state // ABus links and states - l_tuletaProcs[3]->iv_pAProcs[0] = l_tuletaProcs[1]; - l_tuletaProcs[3]->iv_pAProcs[1] = l_tuletaProcs[2]; + l_tuletaProcs[3].iv_pAProcs[0] = &l_tuletaProcs[1]; + l_tuletaProcs[3].iv_pAProcs[1] = &l_tuletaProcs[2]; // XBus links and states - l_tuletaProcs[3]->iv_pXProcs[0] = l_tuletaProcs[2]; + l_tuletaProcs[3].iv_pXProcs[0] = &l_tuletaProcs[2]; // Call _deconfigureAssocProc to determine which procs // should be deconfigured based on state of system passed in @@ -1862,10 +1860,10 @@ public: } // Check result - if (l_tuletaProcs[0]->iv_deconfigured == false && - l_tuletaProcs[1]->iv_deconfigured == false && - l_tuletaProcs[2]->iv_deconfigured == true && - l_tuletaProcs[3]->iv_deconfigured == true) + if (l_tuletaProcs[0].iv_deconfigured == false && + l_tuletaProcs[1].iv_deconfigured == false && + l_tuletaProcs[2].iv_deconfigured == true && + l_tuletaProcs[3].iv_deconfigured == true) { TS_TRACE(INFO_MRK "testDeconfigureAssocProc1: Success"); } @@ -1873,9 +1871,6 @@ public: { TS_FAIL("testDeconfigureAssocProc1: incorrect configuration returned"); } - // Free previously allocated memory - while(!l_tuletaProcs.empty()) delete l_tuletaProcs.back(), - l_tuletaProcs.pop_back(); } @@ -1901,69 +1896,66 @@ public: errlHndl_t l_pErr = NULL; // User-defined number of procs - uint8_t NUM_PROCS = 4; + size_t NUM_PROCS = 4; // Define and populate vector - std::vector l_tuletaProcs(NUM_PROCS); - - for (uint8_t i = 0; i < NUM_PROCS; i++) - { - l_tuletaProcs[i] = new DeconfigGard::ProcInfo(); - } + DeconfigGard::ProcInfoVector l_tuletaProcs; + DeconfigGard::ProcInfo l_ProcInfo = DeconfigGard::ProcInfo(); + l_tuletaProcs.insert(l_tuletaProcs.begin(), NUM_PROCS, l_ProcInfo); // Proc0: - l_tuletaProcs[0]->iv_pThisProc = NULL; // Target * - l_tuletaProcs[0]->procHUID = 0; // HUID - l_tuletaProcs[0]->procFabricNode = 0; // FABRIC_NODE_ID - l_tuletaProcs[0]->procFabricChip = 0; // FABRIC_CHIP_ID - l_tuletaProcs[0]->iv_isMaster = false; // Note master proc - l_tuletaProcs[0]->iv_deconfigured = false; // HWAS state + l_tuletaProcs[0].iv_pThisProc = NULL; // Target * + l_tuletaProcs[0].procHUID = 0; // HUID + l_tuletaProcs[0].procFabricNode = 0; // FABRIC_NODE_ID + l_tuletaProcs[0].procFabricChip = 0; // FABRIC_CHIP_ID + l_tuletaProcs[0].iv_isMaster = false; // Note master proc + l_tuletaProcs[0].iv_deconfigured = false; // HWAS state // ABus links and states - l_tuletaProcs[0]->iv_pAProcs[0] = l_tuletaProcs[2]; - l_tuletaProcs[0]->iv_pAProcs[1] = l_tuletaProcs[2]; + l_tuletaProcs[0].iv_pAProcs[0] = &l_tuletaProcs[2]; + l_tuletaProcs[0].iv_pAProcs[1] = &l_tuletaProcs[2]; // XBus links and states - l_tuletaProcs[0]->iv_pXProcs[0] = l_tuletaProcs[1]; + l_tuletaProcs[0].iv_pXProcs[0] = &l_tuletaProcs[1]; // Proc1: - l_tuletaProcs[1]->iv_pThisProc = NULL; // Target * - l_tuletaProcs[1]->procHUID = 1; // HUID - l_tuletaProcs[1]->procFabricNode = 0; // FABRIC_NODE_ID - l_tuletaProcs[1]->procFabricChip = 1; // FABRIC_CHIP_ID - l_tuletaProcs[1]->iv_isMaster = false; // Not master proc - l_tuletaProcs[1]->iv_deconfigured = false; // HWAS state + l_tuletaProcs[1].iv_pThisProc = NULL; // Target * + l_tuletaProcs[1].procHUID = 1; // HUID + l_tuletaProcs[1].procFabricNode = 0; // FABRIC_NODE_ID + l_tuletaProcs[1].procFabricChip = 1; // FABRIC_CHIP_ID + l_tuletaProcs[1].iv_isMaster = false; // Not master proc + l_tuletaProcs[1].iv_deconfigured = false; // HWAS state // ABus links and states - l_tuletaProcs[1]->iv_pAProcs[0] = l_tuletaProcs[3]; - l_tuletaProcs[1]->iv_pAProcs[1] = l_tuletaProcs[3]; + l_tuletaProcs[1].iv_pAProcs[0] = &l_tuletaProcs[3]; + l_tuletaProcs[1].iv_pAProcs[1] = &l_tuletaProcs[3]; // XBus links and states - l_tuletaProcs[1]->iv_pXProcs[0] = l_tuletaProcs[0]; + l_tuletaProcs[1].iv_pXProcs[0] = &l_tuletaProcs[0]; // Proc2: - l_tuletaProcs[2]->iv_pThisProc = NULL; // Target * - l_tuletaProcs[2]->procHUID = 2; // HUID - l_tuletaProcs[2]->procFabricNode = 1; // FABRIC_NODE_ID - l_tuletaProcs[2]->procFabricChip = 0; // FABRIC_CHIP_ID - l_tuletaProcs[2]->iv_isMaster = true; // Master proc - l_tuletaProcs[2]->iv_deconfigured = false; // HWAS state + l_tuletaProcs[2].iv_pThisProc = NULL; // Target * + l_tuletaProcs[2].procHUID = 2; // HUID + l_tuletaProcs[2].procFabricNode = 1; // FABRIC_NODE_ID + l_tuletaProcs[2].procFabricChip = 0; // FABRIC_CHIP_ID + l_tuletaProcs[2].iv_isMaster = true; // Master proc + l_tuletaProcs[2].iv_deconfigured = false; // HWAS state // ABus links and states - l_tuletaProcs[2]->iv_pAProcs[0] = l_tuletaProcs[0]; - l_tuletaProcs[2]->iv_pAProcs[1] = l_tuletaProcs[0]; + l_tuletaProcs[2].iv_pAProcs[0] = &l_tuletaProcs[0]; + l_tuletaProcs[2].iv_pAProcs[1] = &l_tuletaProcs[0]; // XBus links and states - l_tuletaProcs[2]->iv_pXProcs[0] = l_tuletaProcs[3]; - l_tuletaProcs[2]->iv_XDeconfigured[0] = true; + l_tuletaProcs[2].iv_pXProcs[0] = &l_tuletaProcs[3]; + l_tuletaProcs[2].iv_XDeconfigured[0] = true; // Proc3: - l_tuletaProcs[3]->iv_pThisProc = NULL; // Target * - l_tuletaProcs[3]->procHUID = 3; // HUID - l_tuletaProcs[3]->procFabricNode = 1; // FABRIC_NODE_ID - l_tuletaProcs[3]->procFabricChip = 1; // FABRIC_CHIP_ID - l_tuletaProcs[3]->iv_isMaster = false; // Not master proc - l_tuletaProcs[3]->iv_deconfigured = false; // HWAS state + l_tuletaProcs[3].iv_pThisProc = NULL; // Target * + l_tuletaProcs[3].procHUID = 3; // HUID + l_tuletaProcs[3].procFabricNode = 1; // FABRIC_NODE_ID + l_tuletaProcs[3].procFabricChip = 1; // FABRIC_CHIP_ID + l_tuletaProcs[3].iv_isMaster = false; // Not master proc + l_tuletaProcs[3].iv_deconfigured = false; // HWAS state // ABus links and states - l_tuletaProcs[3]->iv_pAProcs[0] = l_tuletaProcs[1]; - l_tuletaProcs[3]->iv_pAProcs[1] = l_tuletaProcs[1]; + l_tuletaProcs[3].iv_pAProcs[0] = &l_tuletaProcs[1]; + l_tuletaProcs[3].iv_pAProcs[1] = &l_tuletaProcs[1]; // XBus links and states - l_tuletaProcs[3]->iv_pXProcs[0] = l_tuletaProcs[2]; - l_tuletaProcs[3]->iv_XDeconfigured[0] = true; + l_tuletaProcs[3].iv_pXProcs[0] = &l_tuletaProcs[2]; + l_tuletaProcs[3].iv_XDeconfigured[0] = true; // Call _deconfigureAssocProc to determine which procs // should be deconfigured based on state of system passed in @@ -1974,10 +1966,10 @@ public: } // Check result - if (l_tuletaProcs[0]->iv_deconfigured == false && - l_tuletaProcs[1]->iv_deconfigured == true && - l_tuletaProcs[2]->iv_deconfigured == false && - l_tuletaProcs[3]->iv_deconfigured == true) + if (l_tuletaProcs[0].iv_deconfigured == false && + l_tuletaProcs[1].iv_deconfigured == true && + l_tuletaProcs[2].iv_deconfigured == false && + l_tuletaProcs[3].iv_deconfigured == true) { TS_TRACE(INFO_MRK "testDeconfigureAssocProc2: Success"); } @@ -1985,9 +1977,6 @@ public: { TS_FAIL("testDeconfigureAssocProc2: incorrect configuration returned"); } - // Free previously allocated memory - while(!l_tuletaProcs.empty()) delete l_tuletaProcs.back(), - l_tuletaProcs.pop_back(); } /** @@ -2011,129 +2000,126 @@ public: errlHndl_t l_pErr = NULL; // User-defined number of procs - uint8_t NUM_PROCS = 8; + size_t NUM_PROCS = 8; // Define and populate vector - std::vector l_orlenaProcs(NUM_PROCS); - - for (uint8_t i = 0; i < NUM_PROCS; i++) - { - l_orlenaProcs[i] = new DeconfigGard::ProcInfo(); - } + DeconfigGard::ProcInfoVector l_orlenaProcs; + DeconfigGard::ProcInfo l_ProcInfo = DeconfigGard::ProcInfo(); + l_orlenaProcs.insert(l_orlenaProcs.begin(), NUM_PROCS, l_ProcInfo); // Proc0: - l_orlenaProcs[0]->iv_pThisProc = NULL; // Target * - l_orlenaProcs[0]->procHUID = 0; // HUID - l_orlenaProcs[0]->procFabricNode = 0; // FABRIC_NODE_ID - l_orlenaProcs[0]->procFabricChip = 0; // FABRIC_CHIP_ID - l_orlenaProcs[0]->iv_isMaster = true; // Master proc - l_orlenaProcs[0]->iv_deconfigured = false; // HWAS state + l_orlenaProcs[0].iv_pThisProc = NULL; // Target * + l_orlenaProcs[0].procHUID = 0; // HUID + l_orlenaProcs[0].procFabricNode = 0; // FABRIC_NODE_ID + l_orlenaProcs[0].procFabricChip = 0; // FABRIC_CHIP_ID + l_orlenaProcs[0].iv_isMaster = true; // Master proc + l_orlenaProcs[0].iv_deconfigured = false; // HWAS state // ABus links and states - l_orlenaProcs[0]->iv_pAProcs[0] = l_orlenaProcs[2]; - l_orlenaProcs[0]->iv_pAProcs[1] = l_orlenaProcs[4]; - l_orlenaProcs[0]->iv_pAProcs[2] = l_orlenaProcs[6]; + l_orlenaProcs[0].iv_pAProcs[0] = &l_orlenaProcs[2]; + l_orlenaProcs[0].iv_pAProcs[1] = &l_orlenaProcs[4]; + l_orlenaProcs[0].iv_pAProcs[2] = &l_orlenaProcs[6]; // XBus links and states - l_orlenaProcs[0]->iv_pXProcs[0] = l_orlenaProcs[1]; - l_orlenaProcs[0]->iv_XDeconfigured[0] = true; + l_orlenaProcs[0].iv_pXProcs[0] = &l_orlenaProcs[1]; + l_orlenaProcs[0].iv_XDeconfigured[0] = true; // Proc1: - l_orlenaProcs[1]->iv_pThisProc = NULL; // Target * - l_orlenaProcs[1]->procHUID = 1; // HUID - l_orlenaProcs[1]->procFabricNode = 0; // FABRIC_NODE_ID - l_orlenaProcs[1]->procFabricChip = 1; // FABRIC_CHIP_ID - l_orlenaProcs[1]->iv_isMaster = false; // Not master proc - l_orlenaProcs[1]->iv_deconfigured = false; // HWAS state + l_orlenaProcs[1].iv_pThisProc = NULL; // Target * + l_orlenaProcs[1].procHUID = 1; // HUID + l_orlenaProcs[1].procFabricNode = 0; // FABRIC_NODE_ID + l_orlenaProcs[1].procFabricChip = 1; // FABRIC_CHIP_ID + l_orlenaProcs[1].iv_isMaster = false; // Not master proc + l_orlenaProcs[1].iv_deconfigured = false; // HWAS state // ABus links and states - l_orlenaProcs[1]->iv_pAProcs[0] = l_orlenaProcs[5]; - l_orlenaProcs[1]->iv_pAProcs[1] = l_orlenaProcs[7]; - l_orlenaProcs[1]->iv_pAProcs[2] = l_orlenaProcs[3]; + l_orlenaProcs[1].iv_pAProcs[0] = &l_orlenaProcs[5]; + l_orlenaProcs[1].iv_pAProcs[1] = &l_orlenaProcs[7]; + l_orlenaProcs[1].iv_pAProcs[2] = &l_orlenaProcs[3]; // XBus links and states - l_orlenaProcs[1]->iv_pXProcs[0] = l_orlenaProcs[0]; - l_orlenaProcs[1]->iv_XDeconfigured[0] = true; + l_orlenaProcs[1].iv_pXProcs[0] = &l_orlenaProcs[0]; + l_orlenaProcs[1].iv_XDeconfigured[0] = true; // Proc2: - l_orlenaProcs[2]->iv_pThisProc = NULL; // Target * - l_orlenaProcs[2]->procHUID = 2; // HUID - l_orlenaProcs[2]->procFabricNode = 1; // FABRIC_NODE_ID - l_orlenaProcs[2]->procFabricChip = 0; // FABRIC_CHIP_ID - l_orlenaProcs[2]->iv_isMaster = false; // Not master proc - l_orlenaProcs[2]->iv_deconfigured = false; // HWAS state + l_orlenaProcs[2].iv_pThisProc = NULL; // Target * + l_orlenaProcs[2].procHUID = 2; // HUID + l_orlenaProcs[2].procFabricNode = 1; // FABRIC_NODE_ID + l_orlenaProcs[2].procFabricChip = 0; // FABRIC_CHIP_ID + l_orlenaProcs[2].iv_isMaster = false; // Not master proc + l_orlenaProcs[2].iv_deconfigured = false; // HWAS state // ABus links and states - l_orlenaProcs[2]->iv_pAProcs[0] = l_orlenaProcs[0]; - l_orlenaProcs[2]->iv_pAProcs[1] = l_orlenaProcs[6]; - l_orlenaProcs[2]->iv_pAProcs[2] = l_orlenaProcs[4]; + l_orlenaProcs[2].iv_pAProcs[0] = &l_orlenaProcs[0]; + l_orlenaProcs[2].iv_pAProcs[1] = &l_orlenaProcs[6]; + l_orlenaProcs[2].iv_pAProcs[2] = &l_orlenaProcs[4]; // XBus links and states - l_orlenaProcs[2]->iv_pXProcs[0] = l_orlenaProcs[3]; + l_orlenaProcs[2].iv_pXProcs[0] = &l_orlenaProcs[3]; // Proc3: - l_orlenaProcs[3]->iv_pThisProc = NULL; // Target * - l_orlenaProcs[3]->procHUID = 3; // HUID - l_orlenaProcs[3]->procFabricNode = 1; // FABRIC_NODE_ID - l_orlenaProcs[3]->procFabricChip = 1; // FABRIC_CHIP_ID - l_orlenaProcs[3]->iv_isMaster = false; // Not master proc - l_orlenaProcs[3]->iv_deconfigured = false; // HWAS state + l_orlenaProcs[3].iv_pThisProc = NULL; // Target * + l_orlenaProcs[3].procHUID = 3; // HUID + l_orlenaProcs[3].procFabricNode = 1; // FABRIC_NODE_ID + l_orlenaProcs[3].procFabricChip = 1; // FABRIC_CHIP_ID + l_orlenaProcs[3].iv_isMaster = false; // Not master proc + l_orlenaProcs[3].iv_deconfigured = false; // HWAS state // ABus links and states - l_orlenaProcs[3]->iv_pAProcs[0] = l_orlenaProcs[7]; - l_orlenaProcs[3]->iv_pAProcs[1] = l_orlenaProcs[5]; - l_orlenaProcs[3]->iv_pAProcs[2] = l_orlenaProcs[1]; + l_orlenaProcs[3].iv_pAProcs[0] = &l_orlenaProcs[7]; + l_orlenaProcs[3].iv_pAProcs[1] = &l_orlenaProcs[5]; + l_orlenaProcs[3].iv_pAProcs[2] = &l_orlenaProcs[1]; // XBus links and states - l_orlenaProcs[3]->iv_pXProcs[0] = l_orlenaProcs[2]; + l_orlenaProcs[3].iv_pXProcs[0] = &l_orlenaProcs[2]; // Proc4: - l_orlenaProcs[4]->iv_pThisProc = NULL; // Target * - l_orlenaProcs[4]->procHUID = 4; // HUID - l_orlenaProcs[4]->procFabricNode = 2; // FABRIC_NODE_ID - l_orlenaProcs[4]->procFabricChip = 0; // FABRIC_CHIP_ID - l_orlenaProcs[4]->iv_isMaster = false; // Master proc - l_orlenaProcs[4]->iv_deconfigured = false; // HWAS state + l_orlenaProcs[4].iv_pThisProc = NULL; // Target * + l_orlenaProcs[4].procHUID = 4; // HUID + l_orlenaProcs[4].procFabricNode = 2; // FABRIC_NODE_ID + l_orlenaProcs[4].procFabricChip = 0; // FABRIC_CHIP_ID + l_orlenaProcs[4].iv_isMaster = false; // Master proc + l_orlenaProcs[4].iv_deconfigured = false; // HWAS state // ABus links and states - l_orlenaProcs[4]->iv_pAProcs[0] = l_orlenaProcs[6]; - l_orlenaProcs[4]->iv_pAProcs[1] = l_orlenaProcs[0]; - l_orlenaProcs[4]->iv_pAProcs[2] = l_orlenaProcs[2]; + l_orlenaProcs[4].iv_pAProcs[0] = &l_orlenaProcs[6]; + l_orlenaProcs[4].iv_pAProcs[1] = &l_orlenaProcs[0]; + l_orlenaProcs[4].iv_pAProcs[2] = &l_orlenaProcs[2]; // XBus links and states - l_orlenaProcs[4]->iv_pXProcs[0] = l_orlenaProcs[5]; + l_orlenaProcs[4].iv_pXProcs[0] = &l_orlenaProcs[5]; // Proc5: - l_orlenaProcs[5]->iv_pThisProc = NULL; // Target * - l_orlenaProcs[5]->procHUID = 5; // HUID - l_orlenaProcs[5]->procFabricNode = 2; // FABRIC_NODE_ID - l_orlenaProcs[5]->procFabricChip = 1; // FABRIC_CHIP_ID - l_orlenaProcs[5]->iv_isMaster = false; // Not master proc - l_orlenaProcs[5]->iv_deconfigured = false; // HWAS state + l_orlenaProcs[5].iv_pThisProc = NULL; // Target * + l_orlenaProcs[5].procHUID = 5; // HUID + l_orlenaProcs[5].procFabricNode = 2; // FABRIC_NODE_ID + l_orlenaProcs[5].procFabricChip = 1; // FABRIC_CHIP_ID + l_orlenaProcs[5].iv_isMaster = false; // Not master proc + l_orlenaProcs[5].iv_deconfigured = false; // HWAS state // ABus links and states - l_orlenaProcs[5]->iv_pAProcs[0] = l_orlenaProcs[1]; - l_orlenaProcs[5]->iv_pAProcs[1] = l_orlenaProcs[3]; - l_orlenaProcs[5]->iv_pAProcs[2] = l_orlenaProcs[7]; + l_orlenaProcs[5].iv_pAProcs[0] = &l_orlenaProcs[1]; + l_orlenaProcs[5].iv_pAProcs[1] = &l_orlenaProcs[3]; + l_orlenaProcs[5].iv_pAProcs[2] = &l_orlenaProcs[7]; // XBus links and states - l_orlenaProcs[5]->iv_pXProcs[0] = l_orlenaProcs[4]; + l_orlenaProcs[5].iv_pXProcs[0] = &l_orlenaProcs[4]; // Proc6: - l_orlenaProcs[6]->iv_pThisProc = NULL; // Target * - l_orlenaProcs[6]->procHUID = 6; // HUID - l_orlenaProcs[6]->procFabricNode = 3; // FABRIC_NODE_ID - l_orlenaProcs[6]->procFabricChip = 0; // FABRIC_CHIP_ID - l_orlenaProcs[6]->iv_isMaster = false; // Not master proc - l_orlenaProcs[6]->iv_deconfigured = false; // HWAS state + l_orlenaProcs[6].iv_pThisProc = NULL; // Target * + l_orlenaProcs[6].procHUID = 6; // HUID + l_orlenaProcs[6].procFabricNode = 3; // FABRIC_NODE_ID + l_orlenaProcs[6].procFabricChip = 0; // FABRIC_CHIP_ID + l_orlenaProcs[6].iv_isMaster = false; // Not master proc + l_orlenaProcs[6].iv_deconfigured = false; // HWAS state // ABus links and states - l_orlenaProcs[6]->iv_pAProcs[0] = l_orlenaProcs[4]; - l_orlenaProcs[6]->iv_pAProcs[1] = l_orlenaProcs[2]; - l_orlenaProcs[6]->iv_pAProcs[2] = l_orlenaProcs[0]; + l_orlenaProcs[6].iv_pAProcs[0] = &l_orlenaProcs[4]; + l_orlenaProcs[6].iv_pAProcs[1] = &l_orlenaProcs[2]; + l_orlenaProcs[6].iv_pAProcs[2] = &l_orlenaProcs[0]; // XBus links and states - l_orlenaProcs[6]->iv_pXProcs[0] = l_orlenaProcs[7]; + l_orlenaProcs[6].iv_pXProcs[0] = &l_orlenaProcs[7]; // Proc7: - l_orlenaProcs[7]->iv_pThisProc = NULL; // Target * - l_orlenaProcs[7]->procHUID = 7; // HUID - l_orlenaProcs[7]->procFabricNode = 3; // FABRIC_NODE_ID - l_orlenaProcs[7]->procFabricChip = 1; // FABRIC_CHIP_ID - l_orlenaProcs[7]->iv_isMaster = false; // Not master proc - l_orlenaProcs[7]->iv_deconfigured = false; // HWAS state + l_orlenaProcs[7].iv_pThisProc = NULL; // Target * + l_orlenaProcs[7].procHUID = 7; // HUID + l_orlenaProcs[7].procFabricNode = 3; // FABRIC_NODE_ID + l_orlenaProcs[7].procFabricChip = 1; // FABRIC_CHIP_ID + l_orlenaProcs[7].iv_isMaster = false; // Not master proc + l_orlenaProcs[7].iv_deconfigured = false; // HWAS state // ABus links and states - l_orlenaProcs[7]->iv_pAProcs[0] = l_orlenaProcs[3]; - l_orlenaProcs[7]->iv_pAProcs[1] = l_orlenaProcs[1]; - l_orlenaProcs[7]->iv_pAProcs[2] = l_orlenaProcs[5]; + l_orlenaProcs[7].iv_pAProcs[0] = &l_orlenaProcs[3]; + l_orlenaProcs[7].iv_pAProcs[1] = &l_orlenaProcs[1]; + l_orlenaProcs[7].iv_pAProcs[2] = &l_orlenaProcs[5]; // XBus links and states - l_orlenaProcs[7]->iv_pXProcs[0] = l_orlenaProcs[6]; + l_orlenaProcs[7].iv_pXProcs[0] = &l_orlenaProcs[6]; // Call _deconfigureAssocProc to determine which procs // should be deconfigured based on state of system passed in @@ -2144,14 +2130,14 @@ public: } // Check result - if (l_orlenaProcs[0]->iv_deconfigured == false && - l_orlenaProcs[1]->iv_deconfigured == true && - l_orlenaProcs[2]->iv_deconfigured == false && - l_orlenaProcs[3]->iv_deconfigured == true && - l_orlenaProcs[4]->iv_deconfigured == false && - l_orlenaProcs[5]->iv_deconfigured == true && - l_orlenaProcs[6]->iv_deconfigured == false && - l_orlenaProcs[7]->iv_deconfigured == true) + if (l_orlenaProcs[0].iv_deconfigured == false && + l_orlenaProcs[1].iv_deconfigured == true && + l_orlenaProcs[2].iv_deconfigured == false && + l_orlenaProcs[3].iv_deconfigured == true && + l_orlenaProcs[4].iv_deconfigured == false && + l_orlenaProcs[5].iv_deconfigured == true && + l_orlenaProcs[6].iv_deconfigured == false && + l_orlenaProcs[7].iv_deconfigured == true) { TS_TRACE(INFO_MRK "testDeconfigureAssocProc3: Success"); } @@ -2159,9 +2145,6 @@ public: { TS_FAIL("testDeconfigureAssocProc3: incorrect configuration returned"); } - // Free previously allocated memory - while(!l_orlenaProcs.empty()) delete l_orlenaProcs.back(), - l_orlenaProcs.pop_back(); } @@ -2186,131 +2169,128 @@ public: errlHndl_t l_pErr = NULL; // User-defined number of procs - uint8_t NUM_PROCS = 8; + size_t NUM_PROCS = 8; // Define and populate vector - std::vector l_orlenaProcs(NUM_PROCS); - - for (uint8_t i = 0; i < NUM_PROCS; i++) - { - l_orlenaProcs[i] = new DeconfigGard::ProcInfo(); - } + DeconfigGard::ProcInfoVector l_orlenaProcs; + DeconfigGard::ProcInfo l_ProcInfo = DeconfigGard::ProcInfo(); + l_orlenaProcs.insert(l_orlenaProcs.begin(), NUM_PROCS, l_ProcInfo); // Proc0: - l_orlenaProcs[0]->iv_pThisProc = NULL; // Target * - l_orlenaProcs[0]->procHUID = 0; // HUID - l_orlenaProcs[0]->procFabricNode = 0; // FABRIC_NODE_ID - l_orlenaProcs[0]->procFabricChip = 0; // FABRIC_CHIP_ID - l_orlenaProcs[0]->iv_isMaster = true; // Master proc - l_orlenaProcs[0]->iv_deconfigured = false; // HWAS state + l_orlenaProcs[0].iv_pThisProc = NULL; // Target * + l_orlenaProcs[0].procHUID = 0; // HUID + l_orlenaProcs[0].procFabricNode = 0; // FABRIC_NODE_ID + l_orlenaProcs[0].procFabricChip = 0; // FABRIC_CHIP_ID + l_orlenaProcs[0].iv_isMaster = true; // Master proc + l_orlenaProcs[0].iv_deconfigured = false; // HWAS state // ABus links and states - l_orlenaProcs[0]->iv_pAProcs[0] = l_orlenaProcs[2]; - l_orlenaProcs[0]->iv_pAProcs[1] = l_orlenaProcs[4]; - l_orlenaProcs[0]->iv_pAProcs[2] = l_orlenaProcs[6]; + l_orlenaProcs[0].iv_pAProcs[0] = &l_orlenaProcs[2]; + l_orlenaProcs[0].iv_pAProcs[1] = &l_orlenaProcs[4]; + l_orlenaProcs[0].iv_pAProcs[2] = &l_orlenaProcs[6]; // XBus links and states - l_orlenaProcs[0]->iv_pXProcs[0] = l_orlenaProcs[1]; + l_orlenaProcs[0].iv_pXProcs[0] = &l_orlenaProcs[1]; // Proc1: - l_orlenaProcs[1]->iv_pThisProc = NULL; // Target * - l_orlenaProcs[1]->procHUID = 1; // HUID - l_orlenaProcs[1]->procFabricNode = 0; // FABRIC_NODE_ID - l_orlenaProcs[1]->procFabricChip = 1; // FABRIC_CHIP_ID - l_orlenaProcs[1]->iv_isMaster = false; // Not master proc - l_orlenaProcs[1]->iv_deconfigured = false; // HWAS state + l_orlenaProcs[1].iv_pThisProc = NULL; // Target * + l_orlenaProcs[1].procHUID = 1; // HUID + l_orlenaProcs[1].procFabricNode = 0; // FABRIC_NODE_ID + l_orlenaProcs[1].procFabricChip = 1; // FABRIC_CHIP_ID + l_orlenaProcs[1].iv_isMaster = false; // Not master proc + l_orlenaProcs[1].iv_deconfigured = false; // HWAS state // ABus links and states - l_orlenaProcs[1]->iv_pAProcs[0] = l_orlenaProcs[5]; - l_orlenaProcs[1]->iv_pAProcs[1] = l_orlenaProcs[7]; - l_orlenaProcs[1]->iv_pAProcs[2] = l_orlenaProcs[3]; + l_orlenaProcs[1].iv_pAProcs[0] = &l_orlenaProcs[5]; + l_orlenaProcs[1].iv_pAProcs[1] = &l_orlenaProcs[7]; + l_orlenaProcs[1].iv_pAProcs[2] = &l_orlenaProcs[3]; // XBus links and states - l_orlenaProcs[1]->iv_pXProcs[0] = l_orlenaProcs[0]; + l_orlenaProcs[1].iv_pXProcs[0] = &l_orlenaProcs[0]; // Proc2: - l_orlenaProcs[2]->iv_pThisProc = NULL; // Target * - l_orlenaProcs[2]->procHUID = 2; // HUID - l_orlenaProcs[2]->procFabricNode = 1; // FABRIC_NODE_ID - l_orlenaProcs[2]->procFabricChip = 0; // FABRIC_CHIP_ID - l_orlenaProcs[2]->iv_isMaster = false; // Not master proc - l_orlenaProcs[2]->iv_deconfigured = false; // HWAS state + l_orlenaProcs[2].iv_pThisProc = NULL; // Target * + l_orlenaProcs[2].procHUID = 2; // HUID + l_orlenaProcs[2].procFabricNode = 1; // FABRIC_NODE_ID + l_orlenaProcs[2].procFabricChip = 0; // FABRIC_CHIP_ID + l_orlenaProcs[2].iv_isMaster = false; // Not master proc + l_orlenaProcs[2].iv_deconfigured = false; // HWAS state // ABus links and states - l_orlenaProcs[2]->iv_pAProcs[0] = l_orlenaProcs[0]; - l_orlenaProcs[2]->iv_pAProcs[1] = l_orlenaProcs[6]; - l_orlenaProcs[2]->iv_pAProcs[2] = l_orlenaProcs[4]; - l_orlenaProcs[2]->iv_ADeconfigured[2] = true; + l_orlenaProcs[2].iv_pAProcs[0] = &l_orlenaProcs[0]; + l_orlenaProcs[2].iv_pAProcs[1] = &l_orlenaProcs[6]; + l_orlenaProcs[2].iv_pAProcs[2] = &l_orlenaProcs[4]; + l_orlenaProcs[2].iv_ADeconfigured[2] = true; // XBus links and states - l_orlenaProcs[2]->iv_pXProcs[0] = l_orlenaProcs[3]; + l_orlenaProcs[2].iv_pXProcs[0] = &l_orlenaProcs[3]; // Proc3: - l_orlenaProcs[3]->iv_pThisProc = NULL; // Target * - l_orlenaProcs[3]->procHUID = 3; // HUID - l_orlenaProcs[3]->procFabricNode = 1; // FABRIC_NODE_ID - l_orlenaProcs[3]->procFabricChip = 1; // FABRIC_CHIP_ID - l_orlenaProcs[3]->iv_isMaster = false; // Not master proc - l_orlenaProcs[3]->iv_deconfigured = false; // HWAS state + l_orlenaProcs[3].iv_pThisProc = NULL; // Target * + l_orlenaProcs[3].procHUID = 3; // HUID + l_orlenaProcs[3].procFabricNode = 1; // FABRIC_NODE_ID + l_orlenaProcs[3].procFabricChip = 1; // FABRIC_CHIP_ID + l_orlenaProcs[3].iv_isMaster = false; // Not master proc + l_orlenaProcs[3].iv_deconfigured = false; // HWAS state // ABus links and states - l_orlenaProcs[3]->iv_pAProcs[0] = l_orlenaProcs[7]; - l_orlenaProcs[3]->iv_pAProcs[1] = l_orlenaProcs[5]; - l_orlenaProcs[3]->iv_pAProcs[2] = l_orlenaProcs[1]; + l_orlenaProcs[3].iv_pAProcs[0] = &l_orlenaProcs[7]; + l_orlenaProcs[3].iv_pAProcs[1] = &l_orlenaProcs[5]; + l_orlenaProcs[3].iv_pAProcs[2] = &l_orlenaProcs[1]; // XBus links and states - l_orlenaProcs[3]->iv_pXProcs[0] = l_orlenaProcs[2]; + l_orlenaProcs[3].iv_pXProcs[0] = &l_orlenaProcs[2]; // Proc4: - l_orlenaProcs[4]->iv_pThisProc = NULL; // Target * - l_orlenaProcs[4]->procHUID = 4; // HUID - l_orlenaProcs[4]->procFabricNode = 2; // FABRIC_NODE_ID - l_orlenaProcs[4]->procFabricChip = 0; // FABRIC_CHIP_ID - l_orlenaProcs[4]->iv_isMaster = false; // Master proc - l_orlenaProcs[4]->iv_deconfigured = false; // HWAS state + l_orlenaProcs[4].iv_pThisProc = NULL; // Target * + l_orlenaProcs[4].procHUID = 4; // HUID + l_orlenaProcs[4].procFabricNode = 2; // FABRIC_NODE_ID + l_orlenaProcs[4].procFabricChip = 0; // FABRIC_CHIP_ID + l_orlenaProcs[4].iv_isMaster = false; // Master proc + l_orlenaProcs[4].iv_deconfigured = false; // HWAS state // ABus links and states - l_orlenaProcs[4]->iv_pAProcs[0] = l_orlenaProcs[6]; - l_orlenaProcs[4]->iv_pAProcs[1] = l_orlenaProcs[0]; - l_orlenaProcs[4]->iv_pAProcs[2] = l_orlenaProcs[2]; - l_orlenaProcs[4]->iv_ADeconfigured[2] = true; + l_orlenaProcs[4].iv_pAProcs[0] = &l_orlenaProcs[6]; + l_orlenaProcs[4].iv_pAProcs[1] = &l_orlenaProcs[0]; + l_orlenaProcs[4].iv_pAProcs[2] = &l_orlenaProcs[2]; + l_orlenaProcs[4].iv_ADeconfigured[2] = true; // XBus links and states - l_orlenaProcs[4]->iv_pXProcs[0] = l_orlenaProcs[5]; + l_orlenaProcs[4].iv_pXProcs[0] = &l_orlenaProcs[5]; // Proc5: - l_orlenaProcs[5]->iv_pThisProc = NULL; // Target * - l_orlenaProcs[5]->procHUID = 5; // HUID - l_orlenaProcs[5]->procFabricNode = 2; // FABRIC_NODE_ID - l_orlenaProcs[5]->procFabricChip = 1; // FABRIC_CHIP_ID - l_orlenaProcs[5]->iv_isMaster = false; // Not master proc - l_orlenaProcs[5]->iv_deconfigured = false; // HWAS state + l_orlenaProcs[5].iv_pThisProc = NULL; // Target * + l_orlenaProcs[5].procHUID = 5; // HUID + l_orlenaProcs[5].procFabricNode = 2; // FABRIC_NODE_ID + l_orlenaProcs[5].procFabricChip = 1; // FABRIC_CHIP_ID + l_orlenaProcs[5].iv_isMaster = false; // Not master proc + l_orlenaProcs[5].iv_deconfigured = false; // HWAS state // ABus links and states - l_orlenaProcs[5]->iv_pAProcs[0] = l_orlenaProcs[1]; - l_orlenaProcs[5]->iv_pAProcs[1] = l_orlenaProcs[3]; - l_orlenaProcs[5]->iv_pAProcs[2] = l_orlenaProcs[7]; + l_orlenaProcs[5].iv_pAProcs[0] = &l_orlenaProcs[1]; + l_orlenaProcs[5].iv_pAProcs[1] = &l_orlenaProcs[3]; + l_orlenaProcs[5].iv_pAProcs[2] = &l_orlenaProcs[7]; // XBus links and states - l_orlenaProcs[5]->iv_pXProcs[0] = l_orlenaProcs[4]; + l_orlenaProcs[5].iv_pXProcs[0] = &l_orlenaProcs[4]; // Proc6: - l_orlenaProcs[6]->iv_pThisProc = NULL; // Target * - l_orlenaProcs[6]->procHUID = 6; // HUID - l_orlenaProcs[6]->procFabricNode = 3; // FABRIC_NODE_ID - l_orlenaProcs[6]->procFabricChip = 0; // FABRIC_CHIP_ID - l_orlenaProcs[6]->iv_isMaster = false; // Not master proc - l_orlenaProcs[6]->iv_deconfigured = false; // HWAS state + l_orlenaProcs[6].iv_pThisProc = NULL; // Target * + l_orlenaProcs[6].procHUID = 6; // HUID + l_orlenaProcs[6].procFabricNode = 3; // FABRIC_NODE_ID + l_orlenaProcs[6].procFabricChip = 0; // FABRIC_CHIP_ID + l_orlenaProcs[6].iv_isMaster = false; // Not master proc + l_orlenaProcs[6].iv_deconfigured = false; // HWAS state // ABus links and states - l_orlenaProcs[6]->iv_pAProcs[0] = l_orlenaProcs[4]; - l_orlenaProcs[6]->iv_pAProcs[1] = l_orlenaProcs[2]; - l_orlenaProcs[6]->iv_pAProcs[2] = l_orlenaProcs[0]; + l_orlenaProcs[6].iv_pAProcs[0] = &l_orlenaProcs[4]; + l_orlenaProcs[6].iv_pAProcs[1] = &l_orlenaProcs[2]; + l_orlenaProcs[6].iv_pAProcs[2] = &l_orlenaProcs[0]; // XBus links and states - l_orlenaProcs[6]->iv_pXProcs[0] = l_orlenaProcs[7]; - l_orlenaProcs[6]->iv_XDeconfigured[0] = true; + l_orlenaProcs[6].iv_pXProcs[0] = &l_orlenaProcs[7]; + l_orlenaProcs[6].iv_XDeconfigured[0] = true; // Proc7: - l_orlenaProcs[7]->iv_pThisProc = NULL; // Target * - l_orlenaProcs[7]->procHUID = 7; // HUID - l_orlenaProcs[7]->procFabricNode = 3; // FABRIC_NODE_ID - l_orlenaProcs[7]->procFabricChip = 1; // FABRIC_CHIP_ID - l_orlenaProcs[7]->iv_isMaster = false; // Not master proc - l_orlenaProcs[7]->iv_deconfigured = false; // HWAS state + l_orlenaProcs[7].iv_pThisProc = NULL; // Target * + l_orlenaProcs[7].procHUID = 7; // HUID + l_orlenaProcs[7].procFabricNode = 3; // FABRIC_NODE_ID + l_orlenaProcs[7].procFabricChip = 1; // FABRIC_CHIP_ID + l_orlenaProcs[7].iv_isMaster = false; // Not master proc + l_orlenaProcs[7].iv_deconfigured = false; // HWAS state // ABus links and states - l_orlenaProcs[7]->iv_pAProcs[0] = l_orlenaProcs[3]; - l_orlenaProcs[7]->iv_pAProcs[1] = l_orlenaProcs[1]; - l_orlenaProcs[7]->iv_pAProcs[2] = l_orlenaProcs[5]; + l_orlenaProcs[7].iv_pAProcs[0] = &l_orlenaProcs[3]; + l_orlenaProcs[7].iv_pAProcs[1] = &l_orlenaProcs[1]; + l_orlenaProcs[7].iv_pAProcs[2] = &l_orlenaProcs[5]; // XBus links and states - l_orlenaProcs[7]->iv_pXProcs[0] = l_orlenaProcs[6]; - l_orlenaProcs[7]->iv_XDeconfigured[0] = true; + l_orlenaProcs[7].iv_pXProcs[0] = &l_orlenaProcs[6]; + l_orlenaProcs[7].iv_XDeconfigured[0] = true; // Call _deconfigureAssocProc to determine which procs // should be deconfigured based on state of system passed in @@ -2321,14 +2301,14 @@ public: } // Check result - if (l_orlenaProcs[0]->iv_deconfigured == false && - l_orlenaProcs[1]->iv_deconfigured == false && - l_orlenaProcs[2]->iv_deconfigured == false && - l_orlenaProcs[3]->iv_deconfigured == false && - l_orlenaProcs[4]->iv_deconfigured == true && - l_orlenaProcs[5]->iv_deconfigured == true && - l_orlenaProcs[6]->iv_deconfigured == true && - l_orlenaProcs[7]->iv_deconfigured == true) + if (l_orlenaProcs[0].iv_deconfigured == false && + l_orlenaProcs[1].iv_deconfigured == false && + l_orlenaProcs[2].iv_deconfigured == false && + l_orlenaProcs[3].iv_deconfigured == false && + l_orlenaProcs[4].iv_deconfigured == true && + l_orlenaProcs[5].iv_deconfigured == true && + l_orlenaProcs[6].iv_deconfigured == true && + l_orlenaProcs[7].iv_deconfigured == true) { TS_TRACE(INFO_MRK "testDeconfigureAssocProc4: Success"); } @@ -2336,9 +2316,6 @@ public: { TS_FAIL("testDeconfigureAssocProc4: incorrect configuration returned"); } - // Free previously allocated memory - while(!l_orlenaProcs.empty()) delete l_orlenaProcs.back(), - l_orlenaProcs.pop_back(); } @@ -2364,137 +2341,134 @@ public: errlHndl_t l_pErr = NULL; // User-defined number of procs - uint8_t NUM_PROCS = 8; + size_t NUM_PROCS = 8; // Define and populate vector - std::vector l_orlenaProcs(NUM_PROCS); - - for (uint8_t i = 0; i < NUM_PROCS; i++) - { - l_orlenaProcs[i] = new DeconfigGard::ProcInfo(); - } + DeconfigGard::ProcInfoVector l_orlenaProcs; + DeconfigGard::ProcInfo l_ProcInfo = DeconfigGard::ProcInfo(); + l_orlenaProcs.insert(l_orlenaProcs.begin(), NUM_PROCS, l_ProcInfo); // Proc0: - l_orlenaProcs[0]->iv_pThisProc = NULL; // Target * - l_orlenaProcs[0]->procHUID = 0; // HUID - l_orlenaProcs[0]->procFabricNode = 0; // FABRIC_NODE_ID - l_orlenaProcs[0]->procFabricChip = 0; // FABRIC_CHIP_ID - l_orlenaProcs[0]->iv_isMaster = true; // Master proc - l_orlenaProcs[0]->iv_deconfigured = false; // HWAS state + l_orlenaProcs[0].iv_pThisProc = NULL; // Target * + l_orlenaProcs[0].procHUID = 0; // HUID + l_orlenaProcs[0].procFabricNode = 0; // FABRIC_NODE_ID + l_orlenaProcs[0].procFabricChip = 0; // FABRIC_CHIP_ID + l_orlenaProcs[0].iv_isMaster = true; // Master proc + l_orlenaProcs[0].iv_deconfigured = false; // HWAS state // ABus links and states - l_orlenaProcs[0]->iv_pAProcs[0] = l_orlenaProcs[2]; - l_orlenaProcs[0]->iv_pAProcs[1] = l_orlenaProcs[4]; - l_orlenaProcs[0]->iv_pAProcs[2] = l_orlenaProcs[6]; - l_orlenaProcs[4]->iv_ADeconfigured[1] = true; + l_orlenaProcs[0].iv_pAProcs[0] = &l_orlenaProcs[2]; + l_orlenaProcs[0].iv_pAProcs[1] = &l_orlenaProcs[4]; + l_orlenaProcs[0].iv_pAProcs[2] = &l_orlenaProcs[6]; + l_orlenaProcs[4].iv_ADeconfigured[1] = true; // XBus links and states - l_orlenaProcs[0]->iv_pXProcs[0] = l_orlenaProcs[1]; + l_orlenaProcs[0].iv_pXProcs[0] = &l_orlenaProcs[1]; // Proc1: - l_orlenaProcs[1]->iv_pThisProc = NULL; // Target * - l_orlenaProcs[1]->procHUID = 1; // HUID - l_orlenaProcs[1]->procFabricNode = 0; // FABRIC_NODE_ID - l_orlenaProcs[1]->procFabricChip = 1; // FABRIC_CHIP_ID - l_orlenaProcs[1]->iv_isMaster = false; // Not master proc - l_orlenaProcs[1]->iv_deconfigured = false; // HWAS state + l_orlenaProcs[1].iv_pThisProc = NULL; // Target * + l_orlenaProcs[1].procHUID = 1; // HUID + l_orlenaProcs[1].procFabricNode = 0; // FABRIC_NODE_ID + l_orlenaProcs[1].procFabricChip = 1; // FABRIC_CHIP_ID + l_orlenaProcs[1].iv_isMaster = false; // Not master proc + l_orlenaProcs[1].iv_deconfigured = false; // HWAS state // ABus links and states - l_orlenaProcs[1]->iv_pAProcs[0] = l_orlenaProcs[5]; - l_orlenaProcs[1]->iv_pAProcs[1] = l_orlenaProcs[7]; - l_orlenaProcs[1]->iv_pAProcs[2] = l_orlenaProcs[3]; + l_orlenaProcs[1].iv_pAProcs[0] = &l_orlenaProcs[5]; + l_orlenaProcs[1].iv_pAProcs[1] = &l_orlenaProcs[7]; + l_orlenaProcs[1].iv_pAProcs[2] = &l_orlenaProcs[3]; // XBus links and states - l_orlenaProcs[1]->iv_pXProcs[0] = l_orlenaProcs[0]; + l_orlenaProcs[1].iv_pXProcs[0] = &l_orlenaProcs[0]; // Proc2: - l_orlenaProcs[2]->iv_pThisProc = NULL; // Target * - l_orlenaProcs[2]->procHUID = 2; // HUID - l_orlenaProcs[2]->procFabricNode = 1; // FABRIC_NODE_ID - l_orlenaProcs[2]->procFabricChip = 0; // FABRIC_CHIP_ID - l_orlenaProcs[2]->iv_isMaster = false; // Not master proc - l_orlenaProcs[2]->iv_deconfigured = false; // HWAS state + l_orlenaProcs[2].iv_pThisProc = NULL; // Target * + l_orlenaProcs[2].procHUID = 2; // HUID + l_orlenaProcs[2].procFabricNode = 1; // FABRIC_NODE_ID + l_orlenaProcs[2].procFabricChip = 0; // FABRIC_CHIP_ID + l_orlenaProcs[2].iv_isMaster = false; // Not master proc + l_orlenaProcs[2].iv_deconfigured = false; // HWAS state // ABus links and states - l_orlenaProcs[2]->iv_pAProcs[0] = l_orlenaProcs[0]; - l_orlenaProcs[2]->iv_pAProcs[1] = l_orlenaProcs[6]; - l_orlenaProcs[2]->iv_pAProcs[2] = l_orlenaProcs[4]; - l_orlenaProcs[2]->iv_ADeconfigured[2] = true; + l_orlenaProcs[2].iv_pAProcs[0] = &l_orlenaProcs[0]; + l_orlenaProcs[2].iv_pAProcs[1] = &l_orlenaProcs[6]; + l_orlenaProcs[2].iv_pAProcs[2] = &l_orlenaProcs[4]; + l_orlenaProcs[2].iv_ADeconfigured[2] = true; // XBus links and states - l_orlenaProcs[2]->iv_pXProcs[0] = l_orlenaProcs[3]; + l_orlenaProcs[2].iv_pXProcs[0] = &l_orlenaProcs[3]; // Proc3: - l_orlenaProcs[3]->iv_pThisProc = NULL; // Target * - l_orlenaProcs[3]->procHUID = 3; // HUID - l_orlenaProcs[3]->procFabricNode = 1; // FABRIC_NODE_ID - l_orlenaProcs[3]->procFabricChip = 1; // FABRIC_CHIP_ID - l_orlenaProcs[3]->iv_isMaster = false; // Not master proc - l_orlenaProcs[3]->iv_deconfigured = false; // HWAS state + l_orlenaProcs[3].iv_pThisProc = NULL; // Target * + l_orlenaProcs[3].procHUID = 3; // HUID + l_orlenaProcs[3].procFabricNode = 1; // FABRIC_NODE_ID + l_orlenaProcs[3].procFabricChip = 1; // FABRIC_CHIP_ID + l_orlenaProcs[3].iv_isMaster = false; // Not master proc + l_orlenaProcs[3].iv_deconfigured = false; // HWAS state // ABus links and states - l_orlenaProcs[3]->iv_pAProcs[0] = l_orlenaProcs[7]; - l_orlenaProcs[3]->iv_pAProcs[1] = l_orlenaProcs[5]; - l_orlenaProcs[3]->iv_pAProcs[2] = l_orlenaProcs[1]; + l_orlenaProcs[3].iv_pAProcs[0] = &l_orlenaProcs[7]; + l_orlenaProcs[3].iv_pAProcs[1] = &l_orlenaProcs[5]; + l_orlenaProcs[3].iv_pAProcs[2] = &l_orlenaProcs[1]; // XBus links and states - l_orlenaProcs[3]->iv_pXProcs[0] = l_orlenaProcs[2]; + l_orlenaProcs[3].iv_pXProcs[0] = &l_orlenaProcs[2]; // Proc4: - l_orlenaProcs[4]->iv_pThisProc = NULL; // Target * - l_orlenaProcs[4]->procHUID = 4; // HUID - l_orlenaProcs[4]->procFabricNode = 2; // FABRIC_NODE_ID - l_orlenaProcs[4]->procFabricChip = 0; // FABRIC_CHIP_ID - l_orlenaProcs[4]->iv_isMaster = false; // Master proc - l_orlenaProcs[4]->iv_deconfigured = true; // HWAS state + l_orlenaProcs[4].iv_pThisProc = NULL; // Target * + l_orlenaProcs[4].procHUID = 4; // HUID + l_orlenaProcs[4].procFabricNode = 2; // FABRIC_NODE_ID + l_orlenaProcs[4].procFabricChip = 0; // FABRIC_CHIP_ID + l_orlenaProcs[4].iv_isMaster = false; // Master proc + l_orlenaProcs[4].iv_deconfigured = true; // HWAS state // ABus links and states - l_orlenaProcs[4]->iv_pAProcs[0] = l_orlenaProcs[6]; - l_orlenaProcs[4]->iv_pAProcs[1] = l_orlenaProcs[0]; - l_orlenaProcs[4]->iv_pAProcs[2] = l_orlenaProcs[2]; - l_orlenaProcs[4]->iv_ADeconfigured[0] = true; - l_orlenaProcs[4]->iv_ADeconfigured[1] = true; - l_orlenaProcs[4]->iv_ADeconfigured[2] = true; + l_orlenaProcs[4].iv_pAProcs[0] = &l_orlenaProcs[6]; + l_orlenaProcs[4].iv_pAProcs[1] = &l_orlenaProcs[0]; + l_orlenaProcs[4].iv_pAProcs[2] = &l_orlenaProcs[2]; + l_orlenaProcs[4].iv_ADeconfigured[0] = true; + l_orlenaProcs[4].iv_ADeconfigured[1] = true; + l_orlenaProcs[4].iv_ADeconfigured[2] = true; // XBus links and states - l_orlenaProcs[4]->iv_pXProcs[0] = l_orlenaProcs[5]; - l_orlenaProcs[4]->iv_XDeconfigured[0] = true; + l_orlenaProcs[4].iv_pXProcs[0] = &l_orlenaProcs[5]; + l_orlenaProcs[4].iv_XDeconfigured[0] = true; // Proc5: - l_orlenaProcs[5]->iv_pThisProc = NULL; // Target * - l_orlenaProcs[5]->procHUID = 5; // HUID - l_orlenaProcs[5]->procFabricNode = 2; // FABRIC_NODE_ID - l_orlenaProcs[5]->procFabricChip = 1; // FABRIC_CHIP_ID - l_orlenaProcs[5]->iv_isMaster = false; // Not master proc - l_orlenaProcs[5]->iv_deconfigured = false; // HWAS state + l_orlenaProcs[5].iv_pThisProc = NULL; // Target * + l_orlenaProcs[5].procHUID = 5; // HUID + l_orlenaProcs[5].procFabricNode = 2; // FABRIC_NODE_ID + l_orlenaProcs[5].procFabricChip = 1; // FABRIC_CHIP_ID + l_orlenaProcs[5].iv_isMaster = false; // Not master proc + l_orlenaProcs[5].iv_deconfigured = false; // HWAS state // ABus links and states - l_orlenaProcs[5]->iv_pAProcs[0] = l_orlenaProcs[1]; - l_orlenaProcs[5]->iv_pAProcs[1] = l_orlenaProcs[3]; - l_orlenaProcs[5]->iv_pAProcs[2] = l_orlenaProcs[7]; - l_orlenaProcs[5]->iv_ADeconfigured[2] = true; + l_orlenaProcs[5].iv_pAProcs[0] = &l_orlenaProcs[1]; + l_orlenaProcs[5].iv_pAProcs[1] = &l_orlenaProcs[3]; + l_orlenaProcs[5].iv_pAProcs[2] = &l_orlenaProcs[7]; + l_orlenaProcs[5].iv_ADeconfigured[2] = true; // XBus links and states - l_orlenaProcs[5]->iv_pXProcs[0] = l_orlenaProcs[4]; - l_orlenaProcs[5]->iv_XDeconfigured[0] = true; + l_orlenaProcs[5].iv_pXProcs[0] = &l_orlenaProcs[4]; + l_orlenaProcs[5].iv_XDeconfigured[0] = true; // Proc6: - l_orlenaProcs[6]->iv_pThisProc = NULL; // Target * - l_orlenaProcs[6]->procHUID = 6; // HUID - l_orlenaProcs[6]->procFabricNode = 3; // FABRIC_NODE_ID - l_orlenaProcs[6]->procFabricChip = 0; // FABRIC_CHIP_ID - l_orlenaProcs[6]->iv_isMaster = false; // Not master proc - l_orlenaProcs[6]->iv_deconfigured = false; // HWAS state + l_orlenaProcs[6].iv_pThisProc = NULL; // Target * + l_orlenaProcs[6].procHUID = 6; // HUID + l_orlenaProcs[6].procFabricNode = 3; // FABRIC_NODE_ID + l_orlenaProcs[6].procFabricChip = 0; // FABRIC_CHIP_ID + l_orlenaProcs[6].iv_isMaster = false; // Not master proc + l_orlenaProcs[6].iv_deconfigured = false; // HWAS state // ABus links and states - l_orlenaProcs[6]->iv_pAProcs[0] = l_orlenaProcs[4]; - l_orlenaProcs[6]->iv_pAProcs[1] = l_orlenaProcs[2]; - l_orlenaProcs[6]->iv_pAProcs[2] = l_orlenaProcs[0]; - l_orlenaProcs[6]->iv_ADeconfigured[0] = true; + l_orlenaProcs[6].iv_pAProcs[0] = &l_orlenaProcs[4]; + l_orlenaProcs[6].iv_pAProcs[1] = &l_orlenaProcs[2]; + l_orlenaProcs[6].iv_pAProcs[2] = &l_orlenaProcs[0]; + l_orlenaProcs[6].iv_ADeconfigured[0] = true; // XBus links and states - l_orlenaProcs[6]->iv_pXProcs[0] = l_orlenaProcs[7]; + l_orlenaProcs[6].iv_pXProcs[0] = &l_orlenaProcs[7]; // Proc7: - l_orlenaProcs[7]->iv_pThisProc = NULL; // Target * - l_orlenaProcs[7]->procHUID = 7; // HUID - l_orlenaProcs[7]->procFabricNode = 3; // FABRIC_NODE_ID - l_orlenaProcs[7]->procFabricChip = 1; // FABRIC_CHIP_ID - l_orlenaProcs[7]->iv_isMaster = false; // Not master proc - l_orlenaProcs[7]->iv_deconfigured = false; // HWAS state + l_orlenaProcs[7].iv_pThisProc = NULL; // Target * + l_orlenaProcs[7].procHUID = 7; // HUID + l_orlenaProcs[7].procFabricNode = 3; // FABRIC_NODE_ID + l_orlenaProcs[7].procFabricChip = 1; // FABRIC_CHIP_ID + l_orlenaProcs[7].iv_isMaster = false; // Not master proc + l_orlenaProcs[7].iv_deconfigured = false; // HWAS state // ABus links and states - l_orlenaProcs[7]->iv_pAProcs[0] = l_orlenaProcs[3]; - l_orlenaProcs[7]->iv_pAProcs[1] = l_orlenaProcs[1]; - l_orlenaProcs[7]->iv_pAProcs[2] = l_orlenaProcs[5]; - l_orlenaProcs[7]->iv_ADeconfigured[2] = true; + l_orlenaProcs[7].iv_pAProcs[0] = &l_orlenaProcs[3]; + l_orlenaProcs[7].iv_pAProcs[1] = &l_orlenaProcs[1]; + l_orlenaProcs[7].iv_pAProcs[2] = &l_orlenaProcs[5]; + l_orlenaProcs[7].iv_ADeconfigured[2] = true; // XBus links and states - l_orlenaProcs[7]->iv_pXProcs[0] = l_orlenaProcs[6]; + l_orlenaProcs[7].iv_pXProcs[0] = &l_orlenaProcs[6]; // Call _deconfigureAssocProc to determine which procs // should be deconfigured based on state of system passed in @@ -2505,14 +2479,14 @@ public: } // Check result - if (l_orlenaProcs[0]->iv_deconfigured == false && - l_orlenaProcs[1]->iv_deconfigured == false && - l_orlenaProcs[2]->iv_deconfigured == false && - l_orlenaProcs[3]->iv_deconfigured == false && - l_orlenaProcs[4]->iv_deconfigured == true && - l_orlenaProcs[5]->iv_deconfigured == true && - l_orlenaProcs[6]->iv_deconfigured == false && - l_orlenaProcs[7]->iv_deconfigured == false) + if (l_orlenaProcs[0].iv_deconfigured == false && + l_orlenaProcs[1].iv_deconfigured == false && + l_orlenaProcs[2].iv_deconfigured == false && + l_orlenaProcs[3].iv_deconfigured == false && + l_orlenaProcs[4].iv_deconfigured == true && + l_orlenaProcs[5].iv_deconfigured == true && + l_orlenaProcs[6].iv_deconfigured == false && + l_orlenaProcs[7].iv_deconfigured == false) { TS_TRACE(INFO_MRK "testDeconfigureAssocProc5: Success"); } @@ -2520,9 +2494,6 @@ public: { TS_FAIL("testDeconfigureAssocProc5: incorrect configuration returned"); } - // Free previously allocated memory - while(!l_orlenaProcs.empty()) delete l_orlenaProcs.back(), - l_orlenaProcs.pop_back(); } @@ -2549,67 +2520,64 @@ public: errlHndl_t l_pErr = NULL; // User-defined number of procs - uint8_t NUM_PROCS = 4; + size_t NUM_PROCS = 4; // Define and populate vector - std::vector l_brazosProcs(NUM_PROCS); - - for (uint8_t i = 0; i < NUM_PROCS; i++) - { - l_brazosProcs[i] = new DeconfigGard::ProcInfo(); - } + DeconfigGard::ProcInfoVector l_brazosProcs; + DeconfigGard::ProcInfo l_ProcInfo = DeconfigGard::ProcInfo(); + l_brazosProcs.insert(l_brazosProcs.begin(), NUM_PROCS, l_ProcInfo); // Set proc options // Proc0: - l_brazosProcs[0]->iv_pThisProc = NULL; // Target * - l_brazosProcs[0]->procHUID = 0; // HUID - l_brazosProcs[0]->procFabricNode = 0; // FABRIC_NODE_ID - l_brazosProcs[0]->procFabricChip = 0; // FABRIC_CHIP_ID - l_brazosProcs[0]->iv_isMaster = true; // Master proc - l_brazosProcs[0]->iv_deconfigured = false; // HWAS state + l_brazosProcs[0].iv_pThisProc = NULL; // Target * + l_brazosProcs[0].procHUID = 0; // HUID + l_brazosProcs[0].procFabricNode = 0; // FABRIC_NODE_ID + l_brazosProcs[0].procFabricChip = 0; // FABRIC_CHIP_ID + l_brazosProcs[0].iv_isMaster = true; // Master proc + l_brazosProcs[0].iv_deconfigured = false; // HWAS state // XBus links and states - l_brazosProcs[0]->iv_pXProcs[0] = l_brazosProcs[1]; - l_brazosProcs[0]->iv_pXProcs[1] = l_brazosProcs[2]; - l_brazosProcs[0]->iv_pXProcs[3] = l_brazosProcs[3]; - l_brazosProcs[0]->iv_XDeconfigured[0] = true; + l_brazosProcs[0].iv_pXProcs[0] = &l_brazosProcs[1]; + l_brazosProcs[0].iv_pXProcs[1] = &l_brazosProcs[2]; + l_brazosProcs[0].iv_pXProcs[3] = &l_brazosProcs[3]; + l_brazosProcs[0].iv_XDeconfigured[0] = true; // Proc1: - l_brazosProcs[1]->iv_pThisProc = NULL; // Target * - l_brazosProcs[1]->procHUID = 1; // HUID - l_brazosProcs[1]->procFabricNode = 0; // FABRIC_NODE_ID - l_brazosProcs[1]->procFabricChip = 1; // FABRIC_CHIP_ID - l_brazosProcs[1]->iv_isMaster = false; // Not master proc - l_brazosProcs[1]->iv_deconfigured = false; // HWAS state + l_brazosProcs[1].iv_pThisProc = NULL; // Target * + l_brazosProcs[1].procHUID = 1; // HUID + l_brazosProcs[1].procFabricNode = 0; // FABRIC_NODE_ID + l_brazosProcs[1].procFabricChip = 1; // FABRIC_CHIP_ID + l_brazosProcs[1].iv_isMaster = false; // Not master proc + l_brazosProcs[1].iv_deconfigured = false; // HWAS state // XBus links and states // XBus links and states - l_brazosProcs[1]->iv_pXProcs[0] = l_brazosProcs[2]; - l_brazosProcs[1]->iv_pXProcs[1] = l_brazosProcs[3]; - l_brazosProcs[1]->iv_pXProcs[3] = l_brazosProcs[0]; - l_brazosProcs[1]->iv_XDeconfigured[3] = true; + l_brazosProcs[1].iv_pXProcs[0] = &l_brazosProcs[2]; + l_brazosProcs[1].iv_pXProcs[1] = &l_brazosProcs[3]; + l_brazosProcs[1].iv_pXProcs[3] = &l_brazosProcs[0]; + l_brazosProcs[1].iv_XDeconfigured[3] = true; // Proc2: - l_brazosProcs[2]->iv_pThisProc = NULL; // Target * - l_brazosProcs[2]->procHUID = 2; // HUID - l_brazosProcs[2]->procFabricNode = 0; // FABRIC_NODE_ID - l_brazosProcs[2]->procFabricChip = 2; // FABRIC_CHIP_ID - l_brazosProcs[2]->iv_isMaster = false; // Not master proc - l_brazosProcs[2]->iv_deconfigured = false; // HWAS state + l_brazosProcs[2].iv_pThisProc = NULL; // Target * + l_brazosProcs[2].procHUID = 2; // HUID + l_brazosProcs[2].procFabricNode = 0; // FABRIC_NODE_ID + l_brazosProcs[2].procFabricChip = 2; // FABRIC_CHIP_ID + l_brazosProcs[2].iv_isMaster = false; // Not master proc + l_brazosProcs[2].iv_deconfigured = false; // HWAS state // XBus links and states - l_brazosProcs[2]->iv_pXProcs[0] = l_brazosProcs[3]; - l_brazosProcs[2]->iv_pXProcs[1] = l_brazosProcs[0]; - l_brazosProcs[2]->iv_pXProcs[3] = l_brazosProcs[1]; + l_brazosProcs[2].iv_pXProcs[0] = &l_brazosProcs[3]; + l_brazosProcs[2].iv_pXProcs[1] = &l_brazosProcs[0]; + l_brazosProcs[2].iv_pXProcs[3] = &l_brazosProcs[1]; // Proc3: - l_brazosProcs[3]->iv_pThisProc = NULL; // Target * - l_brazosProcs[3]->procHUID = 3; // HUID - l_brazosProcs[3]->procFabricNode = 0; // FABRIC_NODE_ID - l_brazosProcs[3]->procFabricChip = 3; // FABRIC_CHIP_ID - l_brazosProcs[3]->iv_isMaster = false; // Not master proc - l_brazosProcs[3]->iv_deconfigured = false; // HWAS state + l_brazosProcs[3].iv_pThisProc = NULL; // Target * + l_brazosProcs[3].procHUID = 3; // HUID + l_brazosProcs[3].procFabricNode = 0; // FABRIC_NODE_ID + l_brazosProcs[3].procFabricChip = 3; // FABRIC_CHIP_ID + l_brazosProcs[3].iv_isMaster = false; // Not master proc + l_brazosProcs[3].iv_deconfigured = false; // HWAS state // XBus links and states - l_brazosProcs[3]->iv_pXProcs[0] = l_brazosProcs[0]; - l_brazosProcs[3]->iv_pXProcs[1] = l_brazosProcs[1]; - l_brazosProcs[3]->iv_pXProcs[3] = l_brazosProcs[2]; + l_brazosProcs[3].iv_pXProcs[0] = &l_brazosProcs[0]; + l_brazosProcs[3].iv_pXProcs[1] = &l_brazosProcs[1]; + l_brazosProcs[3].iv_pXProcs[3] = &l_brazosProcs[2]; // Call _deconfigureAssocProc to determine which procs // should be deconfigured based on state of system passed in @@ -2620,10 +2588,10 @@ public: } // Check result - if (l_brazosProcs[0]->iv_deconfigured == false && - l_brazosProcs[1]->iv_deconfigured == true && - l_brazosProcs[2]->iv_deconfigured == false && - l_brazosProcs[3]->iv_deconfigured == false) + if (l_brazosProcs[0].iv_deconfigured == false && + l_brazosProcs[1].iv_deconfigured == true && + l_brazosProcs[2].iv_deconfigured == false && + l_brazosProcs[3].iv_deconfigured == false) { TS_TRACE(INFO_MRK "testDeconfigureAssocProc6: Success"); } @@ -2631,9 +2599,6 @@ public: { TS_FAIL("testDeconfigureAssocProc6: incorrect configuration returned"); } - // Free previously allocated memory - while(!l_brazosProcs.empty()) delete l_brazosProcs.back(), - l_brazosProcs.pop_back(); } @@ -2805,71 +2770,68 @@ public: errlHndl_t l_pErr = NULL; // User-defined number of procs - uint8_t NUM_PROCS = 4; + size_t NUM_PROCS = 4; // Define and populate vector - std::vector l_tuletaProcs(NUM_PROCS); - - for (uint8_t i = 0; i < NUM_PROCS; i++) - { - l_tuletaProcs[i] = new DeconfigGard::ProcInfo(); - } + DeconfigGard::ProcInfoVector l_tuletaProcs; + DeconfigGard::ProcInfo l_ProcInfo = DeconfigGard::ProcInfo(); + l_tuletaProcs.insert(l_tuletaProcs.begin(), NUM_PROCS, l_ProcInfo); // Set proc options // Proc0: - l_tuletaProcs[0]->iv_pThisProc = NULL; // Target * - l_tuletaProcs[0]->procHUID = 0; // HUID - l_tuletaProcs[0]->procFabricNode = 0; // FABRIC_NODE_ID - l_tuletaProcs[0]->procFabricChip = 0; // FABRIC_CHIP_ID - l_tuletaProcs[0]->iv_isMaster = true; // Master proc - l_tuletaProcs[0]->iv_deconfigured = false; // HWAS state - l_tuletaProcs[0]->iv_pAProcs[0] = l_tuletaProcs[2]; - l_tuletaProcs[0]->iv_pAProcs[1] = l_tuletaProcs[2]; - l_tuletaProcs[0]->iv_ADeconfigured[0] = true; - l_tuletaProcs[0]->iv_ADeconfigured[1] = true; - l_tuletaProcs[0]->iv_pXProcs[0] = l_tuletaProcs[1]; + l_tuletaProcs[0].iv_pThisProc = NULL; // Target * + l_tuletaProcs[0].procHUID = 0; // HUID + l_tuletaProcs[0].procFabricNode = 0; // FABRIC_NODE_ID + l_tuletaProcs[0].procFabricChip = 0; // FABRIC_CHIP_ID + l_tuletaProcs[0].iv_isMaster = true; // Master proc + l_tuletaProcs[0].iv_deconfigured = false; // HWAS state + l_tuletaProcs[0].iv_pAProcs[0] = &l_tuletaProcs[2]; + l_tuletaProcs[0].iv_pAProcs[1] = &l_tuletaProcs[2]; + l_tuletaProcs[0].iv_ADeconfigured[0] = true; + l_tuletaProcs[0].iv_ADeconfigured[1] = true; + l_tuletaProcs[0].iv_pXProcs[0] = &l_tuletaProcs[1]; // Proc1: - l_tuletaProcs[1]->iv_pThisProc = NULL; // Target * - l_tuletaProcs[1]->procHUID = 1; // HUID - l_tuletaProcs[1]->procFabricNode = 0; // FABRIC_NODE_ID - l_tuletaProcs[1]->procFabricChip = 1; // FABRIC_CHIP_ID - l_tuletaProcs[1]->iv_isMaster = false; // Not master proc - l_tuletaProcs[1]->iv_deconfigured = false; // HWAS state - l_tuletaProcs[1]->iv_pAProcs[0] = l_tuletaProcs[3]; - l_tuletaProcs[1]->iv_pAProcs[1] = l_tuletaProcs[3]; - l_tuletaProcs[1]->iv_ADeconfigured[0] = true; - l_tuletaProcs[1]->iv_ADeconfigured[1] = true; - l_tuletaProcs[1]->iv_pXProcs[0] = l_tuletaProcs[0]; + l_tuletaProcs[1].iv_pThisProc = NULL; // Target * + l_tuletaProcs[1].procHUID = 1; // HUID + l_tuletaProcs[1].procFabricNode = 0; // FABRIC_NODE_ID + l_tuletaProcs[1].procFabricChip = 1; // FABRIC_CHIP_ID + l_tuletaProcs[1].iv_isMaster = false; // Not master proc + l_tuletaProcs[1].iv_deconfigured = false; // HWAS state + l_tuletaProcs[1].iv_pAProcs[0] = &l_tuletaProcs[3]; + l_tuletaProcs[1].iv_pAProcs[1] = &l_tuletaProcs[3]; + l_tuletaProcs[1].iv_ADeconfigured[0] = true; + l_tuletaProcs[1].iv_ADeconfigured[1] = true; + l_tuletaProcs[1].iv_pXProcs[0] = &l_tuletaProcs[0]; // Proc2: - l_tuletaProcs[2]->iv_pThisProc = NULL; // Target * - l_tuletaProcs[2]->procHUID = 2; // HUID - l_tuletaProcs[2]->procFabricNode = 1; // FABRIC_NODE_ID - l_tuletaProcs[2]->procFabricChip = 0; // FABRIC_CHIP_ID - l_tuletaProcs[2]->iv_isMaster = false; // Not master proc - l_tuletaProcs[2]->iv_deconfigured = true; // HWAS state - l_tuletaProcs[2]->iv_pAProcs[0] = l_tuletaProcs[0]; - l_tuletaProcs[2]->iv_pAProcs[1] = l_tuletaProcs[0]; - l_tuletaProcs[2]->iv_ADeconfigured[0] = true; - l_tuletaProcs[2]->iv_ADeconfigured[1] = true; - l_tuletaProcs[2]->iv_pXProcs[0] = l_tuletaProcs[3]; - l_tuletaProcs[2]->iv_XDeconfigured[0] = true; + l_tuletaProcs[2].iv_pThisProc = NULL; // Target * + l_tuletaProcs[2].procHUID = 2; // HUID + l_tuletaProcs[2].procFabricNode = 1; // FABRIC_NODE_ID + l_tuletaProcs[2].procFabricChip = 0; // FABRIC_CHIP_ID + l_tuletaProcs[2].iv_isMaster = false; // Not master proc + l_tuletaProcs[2].iv_deconfigured = true; // HWAS state + l_tuletaProcs[2].iv_pAProcs[0] = &l_tuletaProcs[0]; + l_tuletaProcs[2].iv_pAProcs[1] = &l_tuletaProcs[0]; + l_tuletaProcs[2].iv_ADeconfigured[0] = true; + l_tuletaProcs[2].iv_ADeconfigured[1] = true; + l_tuletaProcs[2].iv_pXProcs[0] = &l_tuletaProcs[3]; + l_tuletaProcs[2].iv_XDeconfigured[0] = true; // Proc3: - l_tuletaProcs[3]->iv_pThisProc = NULL; // Target * - l_tuletaProcs[3]->procHUID = 3; // HUID - l_tuletaProcs[3]->procFabricNode = 1; // FABRIC_NODE_ID - l_tuletaProcs[3]->procFabricChip = 1; // FABRIC_CHIP_ID - l_tuletaProcs[3]->iv_isMaster = false; // Not master proc - l_tuletaProcs[3]->iv_deconfigured = true; // HWAS state - l_tuletaProcs[3]->iv_pAProcs[0] = l_tuletaProcs[1]; - l_tuletaProcs[3]->iv_pAProcs[1] = l_tuletaProcs[2]; - l_tuletaProcs[3]->iv_ADeconfigured[0] = true; - l_tuletaProcs[3]->iv_ADeconfigured[1] = true; - l_tuletaProcs[3]->iv_pXProcs[0] = l_tuletaProcs[2]; - l_tuletaProcs[3]->iv_XDeconfigured[0] = true; + l_tuletaProcs[3].iv_pThisProc = NULL; // Target * + l_tuletaProcs[3].procHUID = 3; // HUID + l_tuletaProcs[3].procFabricNode = 1; // FABRIC_NODE_ID + l_tuletaProcs[3].procFabricChip = 1; // FABRIC_CHIP_ID + l_tuletaProcs[3].iv_isMaster = false; // Not master proc + l_tuletaProcs[3].iv_deconfigured = true; // HWAS state + l_tuletaProcs[3].iv_pAProcs[0] = &l_tuletaProcs[1]; + l_tuletaProcs[3].iv_pAProcs[1] = &l_tuletaProcs[2]; + l_tuletaProcs[3].iv_ADeconfigured[0] = true; + l_tuletaProcs[3].iv_ADeconfigured[1] = true; + l_tuletaProcs[3].iv_pXProcs[0] = &l_tuletaProcs[2]; + l_tuletaProcs[3].iv_XDeconfigured[0] = true; // Call _deconfigureAssocProc to determine which procs @@ -2881,10 +2843,10 @@ public: } // Check result - if (l_tuletaProcs[0]->iv_deconfigured == false && - l_tuletaProcs[1]->iv_deconfigured == false && - l_tuletaProcs[2]->iv_deconfigured == true && - l_tuletaProcs[3]->iv_deconfigured == true) + if (l_tuletaProcs[0].iv_deconfigured == false && + l_tuletaProcs[1].iv_deconfigured == false && + l_tuletaProcs[2].iv_deconfigured == true && + l_tuletaProcs[3].iv_deconfigured == true) { TS_TRACE(INFO_MRK "testDeconfigureAssocProc8: Success"); } @@ -2892,12 +2854,7 @@ public: { TS_FAIL("testDeconfigureAssocProc8: incorrect configuration returned"); } - // Free previously allocated memory - while(!l_tuletaProcs.empty()) delete l_tuletaProcs.back(), - l_tuletaProcs.pop_back(); } - - }; #endif -- cgit v1.2.1