void IOQRollChkDiff_r10b::VerifyQPointers(SharedIOSQPtr iosq, SharedIOCQPtr iocq) { struct nvme_gen_cq iocqMetrics = iocq->GetQMetrics(); struct nvme_gen_sq iosqMetrics = iosq->GetQMetrics(); uint32_t expectedVal = (2 + MAX(iocq->GetNumEntries(), iosq->GetNumEntries())) % iocq->GetNumEntries(); if (iocqMetrics.head_ptr != expectedVal) { iocq->Dump(FileSystem::PrepDumpFile(mGrpName, mTestName, "iocq", "head_ptr"), "CQ Metrics Head Pointer Inconsistent"); throw FrmwkEx(HERE, "Expected IO CQ.head_ptr = 0x%04X but actual " "IOCQ.head_ptr = 0x%04X", expectedVal, iocqMetrics.head_ptr); } expectedVal = (2 + MAX(iocq->GetNumEntries(), iosq->GetNumEntries())) % iosq->GetNumEntries(); if (iosqMetrics.tail_ptr != expectedVal) { iosq->Dump(FileSystem::PrepDumpFile(mGrpName, mTestName, "iosq", "tail_ptr"), "SQ Metrics Tail Pointer Inconsistent"); throw FrmwkEx(HERE, "Expected IO SQ.tail_ptr = 0x%04X but actual " "IOSQ.tail_ptr = 0x%04X", expectedVal, iosqMetrics.tail_ptr); } }