本文整理汇总了C++中SharedIOSQPtr::GetQId方法的典型用法代码示例。如果您正苦于以下问题:C++ SharedIOSQPtr::GetQId方法的具体用法?C++ SharedIOSQPtr::GetQId怎么用?C++ SharedIOSQPtr::GetQId使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SharedIOSQPtr
的用法示例。
在下文中一共展示了SharedIOSQPtr::GetQId方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: FrmwkEx
void
CIDAcceptedIOSQ_r10b::ReapVerifyCID(SharedIOSQPtr iosq, SharedIOCQPtr iocq,
uint16_t expCID)
{
uint32_t isrCount;
uint32_t ceRemain;
uint32_t numReaped;
uint32_t numCE;
if (iocq->ReapInquiryWaitSpecify(CALC_TIMEOUT_ms(1), 1, numCE,
isrCount) == false) {
iocq->Dump(FileSystem::PrepDumpFile(mGrpName, mTestName, "iocq.fail"),
"Dump Entire IOCQ");
iosq->Dump(FileSystem::PrepDumpFile(mGrpName, mTestName, "iosq.fail"),
"Dump Entire IOSQ");
throw FrmwkEx(HERE, "Unable to see CEs for issued cmd");
}
SharedMemBufferPtr ceMem = SharedMemBufferPtr(new MemBuffer());
if ((numReaped = iocq->Reap(ceRemain, ceMem, isrCount, numCE, true)) != 1) {
iocq->Dump(FileSystem::PrepDumpFile(mGrpName, mTestName, "iocq.fail"),
"Dump Entire IOCQ");
iosq->Dump(FileSystem::PrepDumpFile(mGrpName, mTestName, "iosq.fail"),
"Dump Entire IOSQ");
throw FrmwkEx(HERE, "Unable to reap on IOCQ");
}
union CE *ce = (union CE *)ceMem->GetBuffer();
ProcessCE::Validate(*ce); // throws upon error
if (ce->n.CID != expCID) {
iocq->Dump(FileSystem::PrepDumpFile(mGrpName, mTestName, "iocq.fail"),
"Dump Entire IOCQ");
iosq->Dump(FileSystem::PrepDumpFile(mGrpName, mTestName, "iosq.fail"),
"Dump Entire IOSQ");
throw FrmwkEx(HERE, "Received CID %d but expected %d", ce->n.CID,
expCID);
}
if (ce->n.SQID != iosq->GetQId()) {
iocq->Dump(FileSystem::PrepDumpFile(mGrpName, mTestName, "iocq.fail"),
"Dump Entire IOCQ");
iosq->Dump(FileSystem::PrepDumpFile(mGrpName, mTestName, "iosq.fail"),
"Dump Entire IOSQ");
throw FrmwkEx(HERE, "Rx'd SDID %d but expt'd %d", ce->n.SQID,
iosq->GetQId());
}
}
示例2: FrmwkEx
void
QIDVariations_r10b::ReapVerifyOnCQ(SharedIOCQPtr iocq, SharedIOSQPtr iosq)
{
uint32_t numCE;
uint32_t ceRemain;
uint32_t numReaped;
uint32_t isrCount;
LOG_NRM("Reap and verify CE.");
SharedMemBufferPtr ceMemIOCQ = SharedMemBufferPtr(new MemBuffer());
for (uint32_t nCmds = 1; nCmds < iosq->GetNumEntries(); nCmds++) {
LOG_NRM("Wait for the CE to arrive in IOCQ");
if (iocq->ReapInquiryWaitSpecify(CALC_TIMEOUT_ms(1), 1, numCE,
isrCount) == false) {
iocq->Dump(
FileSystem::PrepDumpFile(mGrpName, mTestName, "iocq", "reapInq"),
"Unable to see any CE's in IOCQ, dump entire CQ contents");
throw FrmwkEx(HERE, "Unable to see completion of cmd");
}
LOG_NRM("The CQ's metrics B4 reaping holds head_ptr needed");
struct nvme_gen_cq iocqMetrics = iocq->GetQMetrics();
KernelAPI::LogCQMetrics(iocqMetrics);
if ((numReaped = iocq->Reap(ceRemain, ceMemIOCQ, isrCount, 1, true))
!= 1) {
iocq->Dump(
FileSystem::PrepDumpFile(mGrpName, mTestName, "iocq", "reap"),
"Unable to see any CE's in IOCQ, dump entire CQ contents");
throw FrmwkEx(HERE, "Verified there was 1 CE, but reaping failed");
}
LOG_NRM("The reaped CE is...");
iocq->LogCE(iocqMetrics.head_ptr);
union CE ce = iocq->PeekCE(iocqMetrics.head_ptr);
ProcessCE::Validate(ce); // throws upon error
if (ce.n.SQID != iosq->GetQId()) {
iocq->Dump(
FileSystem::PrepDumpFile(mGrpName, mTestName, "iocq", "sqId"),
"Wrong SQID in the CE of IOCQ, dump entire CQ contents");
throw FrmwkEx(HERE, "Invalid SQID %d in CE, expected SQID", ce.n.SQID,
iosq->GetQId());
}
}
}
示例3: FrmwkEx
void
MaxIOQMSIXManyTo1_r10b::SendCmdAndReap(SharedIOSQPtr iosq, SharedIOCQPtr iocq,
SharedCmdPtr cmd, uint32_t anticipatedIrqs)
{
uint16_t uniqueId;
uint32_t numCE;
string work;
uint32_t isrCount;
LOG_NRM("Send the cmd to hdw via IOSQ #%d", iosq->GetQId());
iosq->Send(cmd, uniqueId);
work = str(boost::format("ioqId.%d.%s") % iosq->GetQId() %
cmd->GetName().c_str());
iosq->Dump(FileSystem::PrepDumpFile(mGrpName, mTestName, "iosq", work),
"Just B4 ringing doorbell, dump IOSQ");
iosq->Ring();
LOG_NRM("Wait for the CE to arrive in CQ %d", iocq->GetQId());
if (iocq->ReapInquiryWaitSpecify(DEFAULT_CMD_WAIT_ms, 1, numCE, isrCount)
== false) {
iocq->Dump(FileSystem::PrepDumpFile(mGrpName, mTestName, "iocq.fail",
work), "Dump Entire IOCQ");
iosq->Dump(FileSystem::PrepDumpFile(mGrpName, mTestName, "iosq.fail",
work), "Dump Entire IOSQ");
throw FrmwkEx(HERE, "Unable to see CEs for issued cmd");
}
work = str(boost::format("iocq.%d") % uniqueId);
IO::ReapCE(iocq, 1, isrCount, mGrpName, mTestName, work);
if (isrCount != anticipatedIrqs) {
iocq->Dump(FileSystem::PrepDumpFile(mGrpName, mTestName, "iocq.fail",
work), "Dump Entire IOCQ");
iosq->Dump(FileSystem::PrepDumpFile(mGrpName, mTestName, "iosq.fail",
work), "Dump Entire IOSQ");
throw FrmwkEx(HERE, "Anticipated ISRs #%d but fired #%d",
anticipatedIrqs, isrCount);
}
}
示例4: SetPrpBuffer
void
CreateIOSQ::Init(const SharedIOSQPtr iosq)
{
// Setup the PRP buffer based upon contig or non-contig memory
int prpField = MASK_PRP1_PAGE;
if (iosq->GetIsContig() == false)
prpField |= MASK_PRP1_LIST;
SetPrpBuffer((send_64b_bitmask)prpField, iosq->GetQBuffer(),
iosq->GetQSize());
{ // Handle DWORD 10
uint32_t dword10 = GetDword(10);
// Handle q size
dword10 &= ~0xffff0000;
dword10 |= (((uint32_t)iosq->GetNumEntries()) << 16);
// Handle Q ID
dword10 &= ~0x0000ffff;
dword10 |= (uint32_t)iosq->GetQId();
SetDword(dword10, 10);
} // Handle DWORD 10
{ // Handle DWORD 11
uint32_t dword11 = GetDword(11);
// Handle the PC bit
if (iosq->GetIsContig())
dword11 |= 0x00000001;
else
dword11 &= ~0x00000001;
// Handle Q priority
dword11 &= ~0x00000006;
dword11 |= (((uint32_t)iosq->GetPriority()) << 1);
// Handle CQ ID
dword11 &= ~0xffff0000;
dword11 |= (((uint32_t)iosq->GetCqId()) << 16);
SetDword(dword11, 11);
} // Handle DWORD 11
}
示例5: SetWriteCmd
void
IOQRollChkDiff_r10b::IOQRollChkDiff(uint32_t numEntriesIOSQ,
uint32_t numEntriesIOCQ)
{
uint16_t uniqueId;
// Lookup objs which were created in a prior test within group
SharedASQPtr asq = CAST_TO_ASQ(gRsrcMngr->GetObj(ASQ_GROUP_ID))
SharedACQPtr acq = CAST_TO_ACQ(gRsrcMngr->GetObj(ACQ_GROUP_ID))
SharedIOCQPtr iocq = Queues::CreateIOCQContigToHdw(mGrpName,
mTestName, DEFAULT_CMD_WAIT_ms, asq, acq, IOQ_ID, numEntriesIOCQ,
false, IOCQ_CONTIG_GROUP_ID, false, 1);
SharedIOSQPtr iosq = Queues::CreateIOSQContigToHdw(mGrpName,
mTestName, DEFAULT_CMD_WAIT_ms, asq, acq, IOQ_ID, numEntriesIOSQ,
false, IOSQ_CONTIG_GROUP_ID, IOQ_ID, 0);
LOG_NRM("(IOCQ Size, IOSQ Size)=(%d,%d)", iocq->GetNumEntries(),
iosq->GetNumEntries());
SharedWritePtr writeCmd = SetWriteCmd();
LOG_NRM("Send #%d cmds to hdw via the contiguous IOSQ #%d",
MAX(iosq->GetNumEntries(), iocq->GetNumEntries()) + 2,
iosq->GetQId());
for (uint32_t numEntries = 0; numEntries < (uint32_t)(MAX
(iosq->GetNumEntries(), iocq->GetNumEntries()) + 2);
numEntries++) {
LOG_NRM("Processing #%d entries", numEntries);
iosq->Send(writeCmd, uniqueId);
iosq->Ring();
ReapAndVerifyCE(iocq, (numEntries + 1) % iosq->GetNumEntries());
}
VerifyQPointers(iosq, iocq);
LOG_NRM("Delete IOSQ before the IOCQ to comply with spec.");
Queues::DeleteIOSQToHdw(mGrpName, mTestName, DEFAULT_CMD_WAIT_ms,
iosq, asq, acq);
Queues::DeleteIOCQToHdw(mGrpName, mTestName, DEFAULT_CMD_WAIT_ms,
iocq, asq, acq);
}