Lines Matching defs:pAppBuf

673 static bool CidetAppArmBuf(PCIDETAPP pThis, PCIDETAPPBUF pAppBuf)
675 uint8_t *pbUsingBuf = (pAppBuf->fUsingNormal ? pAppBuf->pbNormal : pAppBuf->pbLow);
676 if (pAppBuf->fLastPageProt == pAppBuf->fDefaultProt)
678 if ((pAppBuf->fDefaultProt & (RTMEM_PROT_READ | RTMEM_PROT_WRITE)) != (RTMEM_PROT_READ | RTMEM_PROT_WRITE))
679 RTTESTI_CHECK_RC_RET(RTMemProtect(pbUsingBuf, pAppBuf->cb, pAppBuf->fDefaultProt), VINF_SUCCESS, false);
683 if ((pAppBuf->fDefaultProt & (RTMEM_PROT_READ | RTMEM_PROT_WRITE)) != (RTMEM_PROT_READ | RTMEM_PROT_WRITE))
684 RTTESTI_CHECK_RC_RET(RTMemProtect(pbUsingBuf, pAppBuf->cb - PAGE_SIZE, pAppBuf->fDefaultProt), VINF_SUCCESS, false);
685 RTTESTI_CHECK_RC_RET(RTMemProtect(pbUsingBuf + pAppBuf->cb - PAGE_SIZE, PAGE_SIZE, pAppBuf->fLastPageProt),
688 pAppBuf->fArmed = true;
693 static bool CidetAppDearmBuf(PCIDETAPP pThis, PCIDETAPPBUF pAppBuf)
695 uint8_t *pbUsingBuf = (pAppBuf->fUsingNormal ? pAppBuf->pbNormal : pAppBuf->pbLow);
696 int rc = RTMemProtect(pbUsingBuf, pAppBuf->cb, pAppBuf->fDefaultProt | RTMEM_PROT_READ | RTMEM_PROT_WRITE);
699 RTTestIFailed("RTMemProtect failed on %s buf #%u: %Rrc", pAppBuf->fIsCode ? "code" : "data", pAppBuf->idxCfg, rc);
702 pAppBuf->fArmed = false;
713 PCIDETAPPBUF pAppBuf = &pThisApp->aDataBuffers[pBuf->idxCfg];
719 if (pAppBuf->fArmed)
720 if (RT_UNLIKELY(!CidetAppDearmBuf(pThisApp, pAppBuf)))
726 if (RT_UNLIKELY((size_t)pBuf->off + pBuf->cb > pAppBuf->cb))
728 RTTestIFailed("Buffer too small; off=%#x cb=%#x pAppBuf->cb=%#x (%s)",
729 pBuf->off, pBuf->cb, pAppBuf->cb, pBuf->pCfg->pszName);
737 if (!fUseNormal && !pAppBuf->pbLow)
743 pAppBuf->fUsingNormal = fUseNormal;
753 pBuf->uEffBufAddr = (uintptr_t)pAppBuf->pbNormal;
755 pBuf->uEffBufAddr = (uintptr_t)pAppBuf->pbLow;
767 PCIDETAPPBUF pAppBuf = &pThisApp->aDataBuffers[pBuf->idxCfg];
769 Assert(!pAppBuf->fArmed);
775 uint8_t *pbUsingBuf = (pAppBuf->fUsingNormal ? pAppBuf->pbNormal : pAppBuf->pbLow);
781 return CidetAppArmBuf(pThisApp, pAppBuf);
791 PCIDETAPPBUF pAppBuf = CIDETBUF_IS_CODE(pBuf->pCfg->fFlags)
798 if ( pAppBuf->fArmed
799 && ( !(pAppBuf->fLastPageProt & RTMEM_PROT_READ)
800 || !(pAppBuf->fDefaultProt & RTMEM_PROT_READ)) )
801 if (RT_UNLIKELY(!CidetAppDearmBuf(pThisApp, pAppBuf)))
807 uint8_t *pbUsingBuf = (pAppBuf->fUsingNormal ? pAppBuf->pbNormal : pAppBuf->pbLow);
835 PCIDETAPPBUF pAppBuf = &pThisApp->aCodeBuffers[pBuf->idxCfg];
837 Assert(pAppBuf->fUsingNormal);
842 if (pAppBuf->fArmed)
843 if (RT_UNLIKELY(!CidetAppDearmBuf(pThisApp, pAppBuf)))
858 || (size_t)pBuf->off + pBuf->cb + cbEpilogue > pAppBuf->cb))
860 RTTestIFailed("Buffer too small; off=%#x cb=%#x cbPro=%#x cbEpi=%#x pAppBuf->cb=%#x (%s)",
861 pBuf->off, pBuf->cb, cbPrologue, cbEpilogue, pAppBuf->cb, pBuf->pCfg->pszName);
868 pAppBuf->fUsingNormal = true;
877 pBuf->uEffBufAddr = (uintptr_t)pAppBuf->pbNormal;
889 PCIDETAPPBUF pAppBuf =&pThisApp->aCodeBuffers[pBuf->idxCfg];
891 Assert(pAppBuf->fUsingNormal);
892 Assert(!pAppBuf->fArmed);
897 uint8_t *pbDst = pAppBuf->pbNormal + pBuf->offActive - pBuf->cbPrologue;
902 Assert(pbDst == &pAppBuf->pbNormal[pBuf->offActive]);
1043 AssertMsg(pbDst == &pAppBuf->pbNormal[pBuf->offActive + pBuf->cb + pBuf->cbEpilogue],
1044 ("cbEpilogue=%#x, actual %#x\n", pBuf->cbEpilogue, pbDst - &pAppBuf->pbNormal[pBuf->offActive + pBuf->cb]));
1049 return CidetAppArmBuf(pThisApp, pAppBuf);