您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ AssertRelease函数代码示例

51自学网 2021-06-01 19:47:55
  C++
这篇教程C++ AssertRelease函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中AssertRelease函数的典型用法代码示例。如果您正苦于以下问题:C++ AssertRelease函数的具体用法?C++ AssertRelease怎么用?C++ AssertRelease使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了AssertRelease函数的22个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: DECLHIDDEN

/** * Allocates physical memory which satisfy the given constraints. * * @param   uPhysHi        The upper physical address limit (inclusive). * @param   puPhys         Where to store the physical address of the allocated *                         memory. Optional, can be NULL. * @param   cb             Size of allocation. * @param   uAlignment     Alignment. * @param   fContig        Whether the memory must be physically contiguous or *                         not. * * @returns Virtual address of allocated memory block or NULL if allocation *        failed. */DECLHIDDEN(void *) rtR0SolMemAlloc(uint64_t uPhysHi, uint64_t *puPhys, size_t cb, uint64_t uAlignment, bool fContig){    if ((cb & PAGEOFFSET) != 0)        return NULL;    size_t cPages = (cb + PAGESIZE - 1) >> PAGESHIFT;    if (!cPages)        return NULL;    ddi_dma_attr_t DmaAttr = s_rtR0SolDmaAttr;    DmaAttr.dma_attr_addr_hi    = uPhysHi;    DmaAttr.dma_attr_align      = uAlignment;    if (!fContig)        DmaAttr.dma_attr_sgllen = cPages > INT_MAX ? INT_MAX - 1 : cPages;    else        AssertRelease(DmaAttr.dma_attr_sgllen == 1);    void *pvMem = contig_alloc(cb, &DmaAttr, PAGESIZE, 1 /* can sleep */);    if (!pvMem)    {        LogRel(("rtR0SolMemAlloc failed. cb=%u Align=%u fContig=%d/n", (unsigned)cb, (unsigned)uAlignment, fContig));        return NULL;    }    pfn_t PageFrameNum = hat_getpfnum(kas.a_hat, (caddr_t)pvMem);    AssertRelease(PageFrameNum != PFN_INVALID);    if (puPhys)        *puPhys = (uint64_t)PageFrameNum << PAGESHIFT;    return pvMem;}
开发者ID:mutoso-mirrors,项目名称:vbox,代码行数:45,


示例2: VMMDECL

/** * Flushes the physical handler notifications if the queue is almost full. * * This is for avoiding trouble in RC when changing CR3. * * @param   pVM         Pointer to the VM. * @param   pVCpu       Pointer to the VMCPU of the calling EMT. */VMMDECL(void) REMNotifyHandlerPhysicalFlushIfAlmostFull(PVM pVM, PVMCPU pVCpu){    Assert(pVM->cCpus == 1); NOREF(pVCpu);    /*     * Less than 48 items means we should flush.     */    uint32_t cFree = 0;    for (uint32_t idx = pVM->rem.s.idxFreeList;         idx != UINT32_MAX;         idx = pVM->rem.s.aHandlerNotifications[idx].idxNext)    {        Assert(idx < RT_ELEMENTS(pVM->rem.s.aHandlerNotifications));        if (++cFree >= 48)            return;    }    AssertRelease(VM_FF_IS_SET(pVM, VM_FF_REM_HANDLER_NOTIFY));    AssertRelease(pVM->rem.s.idxPendingList != UINT32_MAX);    /* Ok, we gotta flush them. */    VMMRZCallRing3NoCpu(pVM, VMMCALLRING3_REM_REPLAY_HANDLER_NOTIFICATIONS, 0);    AssertRelease(pVM->rem.s.idxPendingList == UINT32_MAX);    AssertRelease(pVM->rem.s.idxFreeList != UINT32_MAX);}
开发者ID:stefano-garzarella,项目名称:virtualbox-org-svn-vbox-trunk,代码行数:33,


示例3: vmmR3Switcher32On64IdtInit

/** * Initializes the 64-bit IDT for 64-bit guest on 32-bit host switchers. * * This is only used as a debugging aid when we cannot find out why something * goes haywire in the intermediate context. * * @param   pVM        The cross context VM structure. * @param   pSwitcher   The switcher descriptor. * @param   pbDst       Where the switcher code was just copied. * @param   HCPhysDst   The host physical address corresponding to @a pbDst. */static void vmmR3Switcher32On64IdtInit(PVM pVM, PVMMSWITCHERDEF pSwitcher, uint8_t *pbDst, RTHCPHYS HCPhysDst){    AssertRelease(pSwitcher->offGCCode > 0 && pSwitcher->offGCCode < pSwitcher->cbCode);    AssertRelease(pSwitcher->cbCode < _64K);    RTSEL uCs64 = SELMGetHyperCS64(pVM);    PX86DESC64GATE paIdt = (PX86DESC64GATE)(pbDst + pSwitcher->offGCCode);    for (uint32_t i = 0 ; i < 256; i++)    {        AssertRelease(((uint64_t *)&paIdt[i])[0] < pSwitcher->cbCode);        AssertRelease(((uint64_t *)&paIdt[i])[1] == 0);        uint64_t uHandler = HCPhysDst + paIdt[i].u16OffsetLow;        paIdt[i].u16OffsetLow   = (uint16_t)uHandler;        paIdt[i].u16Sel         = uCs64;        paIdt[i].u3IST          = 0;        paIdt[i].u5Reserved     = 0;        paIdt[i].u4Type         = AMD64_SEL_TYPE_SYS_INT_GATE;        paIdt[i].u1DescType     = 0 /* system */;        paIdt[i].u2Dpl          = 3;        paIdt[i].u1Present      = 1;        paIdt[i].u16OffsetHigh  = (uint16_t)(uHandler >> 16);        paIdt[i].u32Reserved    = (uint32_t)(uHandler >> 32);    }    for (VMCPUID iCpu = 0; iCpu < pVM->cCpus; iCpu++)    {        uint64_t uIdtr = HCPhysDst + pSwitcher->offGCCode; AssertRelease(uIdtr < UINT32_MAX);        CPUMSetHyperIDTR(&pVM->aCpus[iCpu], uIdtr, 16*256 + iCpu);    }}
开发者ID:miguelinux,项目名称:vbox,代码行数:41,


示例4: dbgfR3TraceEnable

/** * Initializes the tracing. * * @returns VBox status code * @param   pVM         The cross context VM structure. * @param   cbEntry     The trace entry size. * @param   cEntries    The number of entries. */static int dbgfR3TraceEnable(PVM pVM, uint32_t cbEntry, uint32_t cEntries){    /*     * Don't enable it twice.     */    if (pVM->hTraceBufR3 != NIL_RTTRACEBUF)        return VERR_ALREADY_EXISTS;    /*     * Resolve default parameter values.     */    int rc;    if (!cbEntry)    {        rc = CFGMR3QueryU32Def(CFGMR3GetChild(CFGMR3GetRoot(pVM), "DBGF"), "TraceBufEntrySize", &cbEntry, 128);        AssertRCReturn(rc, rc);    }    if (!cEntries)    {        rc = CFGMR3QueryU32Def(CFGMR3GetChild(CFGMR3GetRoot(pVM), "DBGF"), "TraceBufEntries", &cEntries, 4096);        AssertRCReturn(rc, rc);    }    /*     * Figure the required size.     */    RTTRACEBUF  hTraceBuf;    size_t      cbBlock = 0;    rc = RTTraceBufCarve(&hTraceBuf, cEntries, cbEntry, 0 /*fFlags*/, NULL, &cbBlock);    if (rc != VERR_BUFFER_OVERFLOW)    {        AssertReturn(!RT_SUCCESS_NP(rc), VERR_IPE_UNEXPECTED_INFO_STATUS);        return rc;    }    /*     * Allocate a hyper heap block and carve a trace buffer out of it.     *     * Note! We ASSUME that the returned trace buffer handle has the same value     *       as the heap block.     */    cbBlock = RT_ALIGN_Z(cbBlock, PAGE_SIZE);    void *pvBlock;    rc = MMR3HyperAllocOnceNoRel(pVM, cbBlock, PAGE_SIZE, MM_TAG_DBGF, &pvBlock);    if (RT_FAILURE(rc))        return rc;    rc = RTTraceBufCarve(&hTraceBuf, cEntries, cbEntry, 0 /*fFlags*/, pvBlock, &cbBlock);    AssertRCReturn(rc, rc);    AssertRelease(hTraceBuf == (RTTRACEBUF)pvBlock);    AssertRelease((void *)hTraceBuf == pvBlock);    pVM->hTraceBufR3 = hTraceBuf;    pVM->hTraceBufR0 = MMHyperCCToR0(pVM, hTraceBuf);    pVM->hTraceBufRC = MMHyperCCToRC(pVM, hTraceBuf);    return VINF_SUCCESS;}
开发者ID:svn2github,项目名称:virtualbox,代码行数:65,


示例5: VMMR3DECL

/** * Gets the HC pointer to the dummy page. * * The dummy page is used as a place holder to prevent potential bugs * from doing really bad things to the system. * * @returns Pointer to the dummy page. * @param   pVM         The cross context VM structure. * @thread  The Emulation Thread. */VMMR3DECL(void *) MMR3PageDummyHCPtr(PVM pVM){    VM_ASSERT_EMT(pVM);    if (!pVM->mm.s.pvDummyPage)    {        pVM->mm.s.pvDummyPage = mmR3PagePoolAlloc(pVM->mm.s.pPagePoolR3);        AssertRelease(pVM->mm.s.pvDummyPage);        pVM->mm.s.HCPhysDummyPage = mmPagePoolPtr2Phys(pVM->mm.s.pPagePoolR3, pVM->mm.s.pvDummyPage);        AssertRelease(!(pVM->mm.s.HCPhysDummyPage & ~X86_PTE_PAE_PG_MASK));    }    return pVM->mm.s.pvDummyPage;}
开发者ID:jeppeter,项目名称:vbox,代码行数:22,


示例6: DECLEXPORT

DECLEXPORT(EGLSurface) eglCreatePixmapSurface(EGLDisplay hDisplay, EGLConfig config, EGLNativePixmapType hPixmap,                                              const EGLint *paAttributes){    Display *pDisplay = (Display *)hDisplay;    GLXPixmap hGLXPixmap;    if (!VALID_PTR(hDisplay))    {        setEGLError(EGL_NOT_INITIALIZED);        return EGL_NO_SURFACE;    }    if (paAttributes != NULL)  /* Sanity test only. */        if (*paAttributes != EGL_NONE)        {            if (*paAttributes == EGL_VG_COLORSPACE || *paAttributes == EGL_VG_ALPHA_FORMAT)            {                setEGLError(EGL_BAD_MATCH);                return EGL_NO_SURFACE;            }            else            {                setEGLError(EGL_BAD_ATTRIBUTE);                return EGL_NO_SURFACE;            }        }    hGLXPixmap = glXCreatePixmap(pDisplay, (GLXFBConfig)config, (Pixmap)hPixmap, NULL);    if (hGLXPixmap == None)    {        setEGLError(EGL_BAD_MATCH);        return EGL_NO_SURFACE;    }    AssertRelease(hGLXPixmap < VBEGL_WINDOW_SURFACE);  /* Greater than the maximum XID. */    clearEGLError();    return (EGLSurface)(hGLXPixmap | VBEGL_PIXMAP_SURFACE);}
开发者ID:bhanug,项目名称:virtualbox,代码行数:35,


示例7: AssertReturn

RTCString &RTCString::appendCodePoint(RTUNICP uc){    /*     * Single byte encoding.     */    if (uc < 0x80)        return RTCString::append((char)uc);    /*     * Multibyte encoding.     * Assume max encoding length when resizing the string, that's simpler.     */    AssertReturn(uc <= UINT32_C(0x7fffffff), *this);    if (m_cch + 6 >= m_cbAllocated)    {        reserve(RT_ALIGN_Z(m_cch + 6 + 1, IPRT_MINISTRING_APPEND_ALIGNMENT));        // calls realloc(cbBoth) and sets m_cbAllocated; may throw bad_alloc.#ifndef RT_EXCEPTIONS_ENABLED        AssertRelease(capacity() > m_cch + 6);#endif    }    char *pszNext = RTStrPutCp(&m_psz[m_cch], uc);    m_cch = pszNext - m_psz;    *pszNext = '/0';    return *this;}
开发者ID:stefano-garzarella,项目名称:virtualbox-org-svn-vbox-trunk,代码行数:29,


示例8: hgcmObjDeleteHandle

void hgcmObjDeleteHandle (uint32_t handle){    int rc = VINF_SUCCESS;    LogFlow(("MAIN::hgcmObjDeleteHandle: handle 0x%08X/n", handle));    if (handle)    {        rc = hgcmObjEnter ();        if (RT_SUCCESS(rc))        {            ObjectAVLCore *pCore = (ObjectAVLCore *)RTAvlULRemove (&g_pTree, handle);            if (pCore)            {                AssertRelease(pCore->pSelf);                pCore->pSelf->Dereference ();            }            hgcmObjLeave ();        }        else        {            AssertReleaseMsgFailed (("Failed to acquire object pool semaphore, rc = %Rrc", rc));        }    }    LogFlow(("MAIN::hgcmObjDeleteHandle: rc = %Rrc, return void/n", rc));    return;}
开发者ID:gvsurenderreddy,项目名称:virtualbox,代码行数:33,


示例9: DECLINLINE

/** * Insert a block from the tree. */DECLINLINE(void) rtmemBlockInsert(PRTMEMBLOCK pBlock, void *pv){    pBlock->Core.Key = pv;    rtmemBlockLock();    bool fRc = RTAvlPVInsert(&g_BlocksTree, &pBlock->Core);    rtmemBlockUnlock();    AssertRelease(fRc);}
开发者ID:virendramishra,项目名称:VirtualBox4.1.18,代码行数:11,


示例10: vmmR3Switcher32On64IdtRelocate

/** * Relocates the 64-bit IDT for 64-bit guest on 32-bit host switchers. * * @param   pVM        The cross context VM structure. * @param   pSwitcher   The switcher descriptor. * @param   pbDst       Where the switcher code was just copied. * @param   HCPhysDst   The host physical address corresponding to @a pbDst. */static void vmmR3Switcher32On64IdtRelocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, uint8_t *pbDst, RTHCPHYS HCPhysDst){    AssertRelease(pSwitcher->offGCCode > 0 && pSwitcher->offGCCode < pSwitcher->cbCode && pSwitcher->cbCode < _64K);    /* The intermediate context doesn't move, but the CS may. */    RTSEL uCs64 = SELMGetHyperCS64(pVM);    PX86DESC64GATE paIdt = (PX86DESC64GATE)(pbDst + pSwitcher->offGCCode);    for (uint32_t i = 0 ; i < 256; i++)        paIdt[i].u16Sel = uCs64;    /* Just in case... */    for (VMCPUID iCpu = 0; iCpu < pVM->cCpus; iCpu++)    {        uint64_t uIdtr = HCPhysDst + pSwitcher->offGCCode; AssertRelease(uIdtr < UINT32_MAX);        CPUMSetHyperIDTR(&pVM->aCpus[iCpu], uIdtr, 16*256 + iCpu);    }}
开发者ID:miguelinux,项目名称:vbox,代码行数:25,


示例11: crVBoxHGSMIInit

bool crVBoxHGSMIInit(CRNetReceiveFuncList *rfl, CRNetCloseFuncList *cfl, unsigned int mtu){    /* static */ int bHasHGSMI = -1; /* do it for all connections */    (void) mtu;    if (bHasHGSMI < 0)    {        int rc;        VBOXCRHGSMI_CALLBACKS Callbacks;        Callbacks.pfnClientCreate = _crVBoxHGSMIClientCreate;        Callbacks.pfnClientDestroy = _crVBoxHGSMIClientDestroy;        rc = VBoxCrHgsmiInit(&Callbacks);        AssertRC(rc);        if (RT_SUCCESS(rc))            bHasHGSMI = 1;        else            bHasHGSMI = 0;    }    Assert(bHasHGSMI);    if (!bHasHGSMI)    {#ifdef DEBUG_misha        AssertRelease(0);#endif        return false;    }    g_crvboxhgsmi.recv_list = rfl;    g_crvboxhgsmi.close_list = cfl;    if (g_crvboxhgsmi.initialized)    {        return true;    }    g_crvboxhgsmi.initialized = 1;    g_crvboxhgsmi.num_conns = 0;    g_crvboxhgsmi.conns     = NULL;    g_crvboxhgsmi.mempool = crBufferPoolInit(16);    /* Can't open VBox guest driver here, because it gets called for host side as well */    /*@todo as we have 2 dll versions, can do it now.*/#ifdef RT_OS_WINDOWS    g_crvboxhgsmi.hGuestDrv = INVALID_HANDLE_VALUE;#else    g_crvboxhgsmi.iGuestDrv = INVALID_HANDLE_VALUE;#endif#ifdef CHROMIUM_THREADSAFE    crInitMutex(&g_crvboxhgsmi.mutex);    crInitMutex(&g_crvboxhgsmi.recvmutex);#endif    return true;}
开发者ID:jeppeter,项目名称:vbox,代码行数:58,


示例12: RTDECL

RTDECL(void) RTSpinlockReleaseNoInts(RTSPINLOCK Spinlock){#if 1    if (RT_UNLIKELY(!(Spinlock->fFlags & RTSPINLOCK_FLAGS_INTERRUPT_SAFE)))        RTAssertMsg2("RTSpinlockReleaseNoInts: %p (magic=%#x)/n", Spinlock, Spinlock->u32Magic);#else    AssertRelease(Spinlock->fFlags & RTSPINLOCK_FLAGS_INTERRUPT_SAFE);#endif    RTSpinlockRelease(Spinlock);}
开发者ID:greg100795,项目名称:virtualbox,代码行数:10,


示例13: fillTestShflString

static void fillTestShflString(struct TESTSHFLSTRING *pDest,                               const char *pcszSource){    AssertRelease(  strlen(pcszSource) * 2 + 2                  < sizeof(*pDest) - RT_UOFFSETOF(SHFLSTRING, String));    pDest->string.u16Length = (uint16_t)(strlen(pcszSource) * sizeof(RTUTF16));    pDest->string.u16Size   = pDest->string.u16Length + sizeof(RTUTF16);    for (unsigned i = 0; i <= pDest->string.u16Length; ++i)        pDest->string.String.ucs2[i] = (uint16_t)pcszSource[i];}
开发者ID:sobomax,项目名称:virtualbox_64bit_edd,代码行数:10,


示例14: hgcmObjDereference

void hgcmObjDereference (HGCMObject *pObject){    LogFlow(("MAIN::hgcmObjDereference: pObject %p/n", pObject));    AssertRelease(pObject);    pObject->Dereference ();    LogFlow(("MAIN::hgcmObjDereference: return/n"));}
开发者ID:gvsurenderreddy,项目名称:virtualbox,代码行数:10,


示例15: DECLCALLBACK

/** @interface_method_impl{PDMPCIRAWHLPR3,pfnGetR0Helpers} */static DECLCALLBACK(PCPDMPCIRAWHLPR0) pdmR3PciRawHlp_GetR0Helpers(PPDMDEVINS pDevIns){    PDMDEV_ASSERT_DEVINS(pDevIns);    VM_ASSERT_EMT(pDevIns->Internal.s.pVMR3);    PCPDMHPETHLPR0 pR0Helpers = NIL_RTR0PTR;    int rc = PDMR3LdrGetSymbolR0(pDevIns->Internal.s.pVMR3, NULL, "g_pdmR0PciRawHlp", &pR0Helpers);    AssertReleaseRC(rc);    AssertRelease(pR0Helpers);    LogFlow(("pdmR3PciRawHlp_GetR0Helpers: caller='%s'/%d: returns %RHv/n",             pDevIns->pReg->szName, pDevIns->iInstance, pR0Helpers));    return pR0Helpers;}
开发者ID:greg100795,项目名称:virtualbox,代码行数:13,


示例16: DECLCALLBACK

/** @interface_method_impl{PDMIOAPICHLPR3,pfnGetR0Helpers} */static DECLCALLBACK(PCPDMIOAPICHLPR0) pdmR3IoApicHlp_GetR0Helpers(PPDMDEVINS pDevIns){    PDMDEV_ASSERT_DEVINS(pDevIns);    PVM pVM = pDevIns->Internal.s.pVMR3;    VM_ASSERT_EMT(pVM);    PCPDMIOAPICHLPR0 pR0Helpers = 0;    int rc = PDMR3LdrGetSymbolR0(pVM, NULL, "g_pdmR0IoApicHlp", &pR0Helpers);    AssertReleaseRC(rc);    AssertRelease(pR0Helpers);    LogFlow(("pdmR3IoApicHlp_GetR0Helpers: caller='%s'/%d: returns %RHv/n",             pDevIns->pReg->szName, pDevIns->iInstance, pR0Helpers));    return pR0Helpers;}
开发者ID:svn2github,项目名称:virtualbox,代码行数:14,


示例17: writeFile

	void writeFile(FileLocalization fileLocalization, const char* filepath, const void* buffer, size_t size)	{#if defined(USES_WINDOWS8_DESKTOP) || defined(USES_WINDOWS_OPENGL)		FILE* file = NULL;		errno_t res = _wfopen_s(&file, getFullPathUnicode(fileLocalization, filepath).c_str(), L"wb");		Assert(res == 0);		fwrite(buffer, size, 1, file);		fclose(file);#elif defined(USES_WINDOWS8_METRO)		BasicReaderWriter^ writer = ref new BasicReaderWriter(getStorageFolder(fileLocalization));		auto bytes = ref new Platform::Array<unsigned char>((int)size);		memcpy(bytes->Data, buffer, size);		//Concurrency::task<void> t = writer->WriteDataAsync(getFilePath(filepath), bytes);		//t.wait();		try		{			size_t res = static_cast<size_t>(writer->WriteData(getFilePath(filepath), bytes));			AssertRelease(res == size);		}		catch (Platform::FailureException^ exception)		{			AssertRelease(false);		}#elif defined(USES_LINUX)		std::wstring fullpath = getFullPathUnicode(fileLocalization, filepath);		FILE* file = fopen(Utils::convertWStringToString(fullpath).c_str(), "wb");		Assert(file != NULL);		fwrite(buffer, size, 1, file);		fclose(file);#else	#error#endif	}
开发者ID:Arzar,项目名称:volatile-dove-engine,代码行数:36,


示例18: while

RTCString RTCString::substrCP(size_t pos /*= 0*/, size_t n /*= npos*/) const{    RTCString ret;    if (n)    {        const char *psz;        if ((psz = c_str()))        {            RTUNICP cp;            // walk the UTF-8 characters until where the caller wants to start            size_t i = pos;            while (*psz && i--)                if (RT_FAILURE(RTStrGetCpEx(&psz, &cp)))                    return ret;     // return empty string on bad encoding            const char *pFirst = psz;            if (n == npos)                // all the rest:                ret = pFirst;            else            {                i = n;                while (*psz && i--)                    if (RT_FAILURE(RTStrGetCpEx(&psz, &cp)))                        return ret;     // return empty string on bad encoding                size_t cbCopy = psz - pFirst;                if (cbCopy)                {                    ret.reserve(cbCopy + 1); // may throw bad_alloc#ifndef RT_EXCEPTIONS_ENABLED                    AssertRelease(capacity() >= cbCopy + 1);#endif                    memcpy(ret.m_psz, pFirst, cbCopy);                    ret.m_cch = cbCopy;                    ret.m_psz[cbCopy] = '/0';                }            }        }    }    return ret;}
开发者ID:stefano-garzarella,项目名称:virtualbox-org-svn-vbox-trunk,代码行数:47,


示例19: RTDECL

RTDECL(int)  RTSemFastMutexRelease(RTSEMFASTMUTEX hFastMtx){    /*     * Validate.     */    PRTSEMFASTMUTEXINTERNAL pThis = hFastMtx;    AssertPtrReturn(pThis, VERR_INVALID_HANDLE);    AssertMsgReturn(pThis->u32Magic == RTSEMFASTMUTEX_MAGIC, ("u32Magic=%RX32 pThis=%p/n", pThis->u32Magic, pThis), VERR_INVALID_HANDLE);#if defined(RT_STRICT) || defined(IPRT_DEBUG_SEMS)    AssertRelease(pThis->Owner == RTThreadNativeSelf());    ASMAtomicUoWriteSize(&pThis->Owner, NIL_RTNATIVETHREAD);#endif    up(&pThis->Semaphore);    IPRT_DEBUG_SEMS_STATE(pThis, 'u');    return VINF_SUCCESS;}
开发者ID:herbmillerjr,项目名称:vboxadd-mainline,代码行数:17,


示例20: mVirtualBox

VirtualBox::ClientWatcher::ClientWatcher(const ComObjPtr<VirtualBox> &pVirtualBox) :    mVirtualBox(pVirtualBox),    mThread(NIL_RTTHREAD),    mUpdateReq(CWUPDATEREQARG),    mLock(LOCKCLASS_OBJECTSTATE){#if defined(RT_OS_WINDOWS)    /* Misc state. */    mfTerminate         = false;    mcMsWait            = INFINITE;    mcActiveSubworkers  = 0;    /* Update request.  The UpdateReq event is also used to wake up subthreads. */    mfUpdateReq         = false;    mUpdateReq          = ::CreateEvent(NULL /*pSecAttr*/, TRUE /*fManualReset*/, FALSE /*fInitialState*/, NULL /*pszName*/);    AssertRelease(mUpdateReq != NULL);    /* Initialize the handle array. */    for (uint32_t i = 0; i < RT_ELEMENTS(mahWaitHandles); i++)        mahWaitHandles[i] = NULL;    for (uint32_t i = 0; i < RT_ELEMENTS(mahWaitHandles); i += CW_MAX_HANDLES_PER_THREAD)        mahWaitHandles[i] = mUpdateReq;    mcWaitHandles = 1;#elif defined(RT_OS_OS2)    RTSemEventCreate(&mUpdateReq);#elif defined(VBOX_WITH_SYS_V_IPC_SESSION_WATCHER) || defined(VBOX_WITH_GENERIC_SESSION_WATCHER)    RTSemEventCreate(&mUpdateReq);    /* start with high timeouts, nothing to do */    ASMAtomicUoWriteU8(&mUpdateAdaptCtr, 0);#else# error "Port me!"#endif    int vrc = RTThreadCreate(&mThread,                             worker,                             (void *)this,                             0,                             RTTHREADTYPE_MAIN_WORKER,                             RTTHREADFLAGS_WAITABLE,                             "Watcher");    AssertRC(vrc);}
开发者ID:svn2github,项目名称:virtualbox,代码行数:43,


示例21: rtR0MemObjSolVirtToPhys

/** * Returns the physical address for a virtual address. * * @param pv        The virtual address. * * @returns The physical address corresponding to @a pv. */static uint64_t rtR0MemObjSolVirtToPhys(void *pv){    struct hat *pHat         = NULL;    pfn_t       PageFrameNum = 0;    uintptr_t   uVirtAddr    = (uintptr_t)pv;    if (SOL_IS_KRNL_ADDR(pv))        pHat = kas.a_hat;    else    {        proc_t *pProcess = (proc_t *)RTR0ProcHandleSelf();        AssertRelease(pProcess);        pHat = pProcess->p_as->a_hat;    }    PageFrameNum = hat_getpfnum(pHat, (caddr_t)(uVirtAddr & PAGEMASK));    AssertReleaseMsg(PageFrameNum != PFN_INVALID, ("rtR0MemObjSolVirtToPhys failed. pv=%p/n", pv));    return (((uint64_t)PageFrameNum << PAGE_SHIFT) | (uVirtAddr & PAGE_OFFSET_MASK));}
开发者ID:MadHacker217,项目名称:VirtualBox-OSE,代码行数:26,


示例22: RTDECL

RTDECL(void*) VBoxVBVAExBIterNext(PVBVAEXBUFFERBACKWARDITER pIter, uint32_t *pcbBuffer, bool *pfProcessed){    PVBVAEXBUFFERCONTEXT pCtx = pIter->Base.pCtx;    struct VBVABUFFER *pVBVA = pCtx->pVBVA;    uint32_t indexRecordFirstUncompleted = pCtx->indexRecordFirstUncompleted;    if (!vboxVBVAExIsEntryInRange(indexRecordFirstUncompleted, pIter->Base.iCurRecord, pVBVA->indexRecordFree))        return NULL;    void *pvBuffer = vboxVBVAExIterCur(&pIter->Base, pVBVA, pcbBuffer, pfProcessed);    AssertRelease(pvBuffer);    /* even if the command gets completed by the time we're doing the pCtx->pVBVA->aRecords[pIter->Base.iCurRecord].cbRecord below,     * the pCtx->pVBVA->aRecords[pIter->Base.iCurRecord].cbRecord will still be valid, as it can only be modified by a submitter,     * and we are in a submitter context now */    pIter->Base.iCurRecord = vboxVBVAExSubst(pIter->Base.iCurRecord, 1, VBVA_MAX_RECORDS);    pIter->Base.off32CurCmd = vboxVBVAExSubst(pIter->Base.off32CurCmd, pCtx->pVBVA->aRecords[pIter->Base.iCurRecord].cbRecord, pVBVA->cbData);    return pvBuffer;}
开发者ID:egraba,项目名称:vbox_openbsd,代码行数:19,



注:本文中的AssertRelease函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ AssertReleaseRC函数代码示例
C++ AssertRC函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。