コード例 #1
0
ファイル: alloc.c プロジェクト: ariavie/bcm
void
sal_dma_free(void *addr)
{
    uint32	*p	= (uint32 *)addr;

    /*
     * Verify sentinels on free.  If this assertion fails, it means that
     * memory corruption was detected.
     */

    /*    coverity[conditional (1): FALSE]    */
    /*    coverity[conditional (2): FALSE]    */
    assert(!BAD_PTR(p));	/* Use macro to beautify assert message */
    /*    coverity[conditional (3): FALSE]    */
    /*    coverity[conditional (4): FALSE]    */
    assert(!CORRUPT(p));	/* Use macro to beautify assert message */

#ifdef BROADCOM_DEBUG
#ifdef INCLUDE_BCM_SAL_PROFILE
    SAL_DMA_ALLOC_RESOURCE_USAGE_DECR(
        _sal_dma_alloc_curr,
        (p[-2] * 4),
        ilock);
#endif
#endif /* BROADCOM_DEBUG */

    MEMLOG_FREE("sal_dma_free", &p[-2]);

    p[-1] = 0;			/* Detect redundant frees */
    /*    coverity[address_free : FALSE]    */
    free(&p[-2]);
}
コード例 #2
0
ファイル: alloc.c プロジェクト: ariavie/bcm
void
sal_free(void *addr)
{
    uint32	*p	= (uint32 *)addr;

    EXT_DEBUG_FREE(addr);

    /*
     * Verify sentinels on free.  If this assertion fails, it means that
     * memory corruption was detected.
     */

#ifdef SAL_FREE_NULL_IGNORE
    if (addr == NULL)
    {
        return;
    }
#endif

    AGGR_DEBUG_FREE(addr);

    if (BAD_PTR(p) || CORRUPT(p)) {
        AGGR_DEBUG_PRINT_BAD_ADDR(addr);
        assert(!BAD_PTR(p));	/* Use macro to beautify assert message */
        assert(!CORRUPT(p));	/* Use macro to beautify assert message */
    }

    sal_free_calls += 1;
    sal_free_bytes += p[-2] * 4;

#ifdef BROADCOM_DEBUG
#ifdef INCLUDE_BCM_SAL_PROFILE
    SAL_ALLOC_RESOURCE_USAGE_DECR(
        _sal_alloc_curr,
        (p[-2] * 4),
        ilock);
#endif
#endif /* BROADCOM_DEBUG */

    MEMLOG_FREE("sal_free", &p[-2]);

    p[-1] = 0;			/* Detect redundant frees */
    /*    coverity[address_free : FALSE]    */
    free(&p[-2]);
}
コード例 #3
0
ファイル: EWV.CPP プロジェクト: tjotala/Articles
BOOL GetTaskExpWinVer(HTASK hTask, LPWORD pwVer)
{
    LPBYTE pTDB = LPBYTE(MAKELP(hTask, 0));
    if (!BAD_PTR(pTDB, 0xfc) &&
        pTDB[0xfa] == 'T' && pTDB[0xfb] == 'D' &&
        (pTDB[0x16] & 0x10) == 0x00) // !Win32 task
    {
        *pwVer = MAKEWORD(pTDB[0x1a], pTDB[0x1b]);
        return (TRUE);
    }
    return (FALSE);
}
コード例 #4
0
ファイル: EWV.CPP プロジェクト: tjotala/Articles
BOOL GetModuleExpWinVer(HMODULE hModule, LPWORD pwVer)
{
    hModule = GetExePtr(hModule);
    LPBYTE pMDB = LPBYTE(MAKELP(hModule, 0));
    if (!BAD_PTR(pMDB, 0x40) &&
        pMDB[0x00] == 'N' && pMDB[0x01] == 'E' &&
        (pMDB[0x0c] & 0x10) == 0x00) // !Win32 module
    {
        *pwVer = MAKEWORD(pMDB[0x3e], pMDB[0x3f]);
        return (TRUE);
    }
    return (FALSE);
}
コード例 #5
0
ファイル: EWV.CPP プロジェクト: tjotala/Articles
BOOL SetModuleExpWinVer(HMODULE hModule, WORD wVer)
{
    hModule = GetExePtr(hModule);
    LPBYTE pMDB = LPBYTE(MAKELP(hModule, 0));
    if (!BAD_PTR(pMDB, 0x40) &&
        pMDB[0x00] == 'N' && pMDB[0x01] == 'E' &&
        (pMDB[0x0c] & 0x10) == 0x00) // !Win32 module
    {
        pMDB[0x3e] = LOBYTE(wVer); // minor
        pMDB[0x3f] = HIBYTE(wVer); // major
        return (TRUE);
    }
    return (FALSE);
}
コード例 #6
0
ファイル: EWV.CPP プロジェクト: tjotala/Articles
BOOL SetTaskExpWinVer(HTASK hTask, WORD wVer)
{
    LPBYTE pTDB = LPBYTE(MAKELP(hTask, 0));
    if (!BAD_PTR(pTDB, 0xfc) &&
        pTDB[0xfa] == 'T' && pTDB[0xfb] == 'D' &&
        (pTDB[0x16] & 0x10) == 0x00) // !Win32 task
    {
        WORD wSel = MAKEWORD(pTDB[0x20], pTDB[0x21]);
        if (SetQueueExpWinVer(HGLOBAL(wSel), wVer))
        {
            pTDB[0x1a] = LOBYTE(wVer); // minor
            pTDB[0x1b] = HIBYTE(wVer); // major
            return (TRUE);
        }
    }
    return (FALSE);
}
コード例 #7
0
ファイル: EWV.CPP プロジェクト: tjotala/Articles
static BOOL SetQueueExpWinVer(HGLOBAL hQueue, WORD wVer)
{
    LPBYTE pMQ = LPBYTE(MAKELP(hQueue, 0));
    if (!BAD_PTR(pMQ, 0x44))
    {
        if (IsWin95())
        {
            pMQ[0x42] = LOBYTE(wVer); // minor
            pMQ[0x43] = HIBYTE(wVer); // major
        }
        else
        {
            pMQ[0x36] = LOBYTE(wVer); // minor
            pMQ[0x37] = HIBYTE(wVer); // major
        }
        return (TRUE);
    }
    return (FALSE);
}