Esempio n. 1
0
static void *
crSDPAlloc( CRConnection *conn )
{
  CRSDPBuffer *buf;
  
#ifdef CHROMIUM_THREADSAFE
  crLockMutex(&cr_sdp.mutex);
#endif
  
	buf = (CRSDPBuffer *) crBufferPoolPop( cr_sdp.bufpool, conn->buffer_size );
  
	if ( buf == NULL )
	{
		crDebug( "Buffer pool %p was empty, so I allocated %d bytes.\n\tI did so from the buffer: %p", 
             cr_sdp.bufpool,
             (unsigned int)sizeof(CRSDPBuffer) + conn->buffer_size, &cr_sdp.bufpool );
		buf = (CRSDPBuffer *) 
			crAlloc( sizeof(CRSDPBuffer) + conn->buffer_size );
		buf->magic = CR_SDP_BUFFER_MAGIC;
		buf->kind  = CRSDPMemory;
		buf->pad   = 0;
		buf->allocated = conn->buffer_size;
	}
	else {
		CRASSERT(buf->magic == CR_SDP_BUFFER_MAGIC);
	}

#ifdef CHROMIUM_THREADSAFE
	crUnlockMutex(&cr_sdp.mutex);
#endif
  
	return (void *)( buf + 1 );
}
Esempio n. 2
0
static void
*crFileAlloc( CRConnection *conn )
{
	CRFileBuffer *buf;

#ifdef CHROMIUM_THREADSAFE
	crLockMutex(&cr_file.mutex);
#endif

	buf  = (CRFileBuffer *) crBufferPoolPop( cr_file.bufpool, conn->buffer_size );

	if ( buf == NULL )
	{
		crDebug( "Buffer pool was empty, so I allocated %d bytes", 
			(int)(sizeof(CRFileBuffer) + conn->buffer_size) );
		buf = (CRFileBuffer *) 
			crAlloc( sizeof(CRFileBuffer) + conn->buffer_size );
		buf->magic = CR_FILE_BUFFER_MAGIC;
		buf->kind  = CRFileMemory;
		buf->pad   = 0;
		buf->allocated = conn->buffer_size;
	}

#ifdef CHROMIUM_THREADSAFE
	crUnlockMutex(&cr_file.mutex);
#endif

	return (void *)( buf + 1 );
}
Esempio n. 3
0
/*
 * Get an empty packing buffer from the buffer pool, or allocate a new one.
 * Then tell the packer to use it.
 */
void hiddenlineProvidePackBuffer(void)
{
	void *buf;
	GET_CONTEXT(context);

	CRASSERT(context);

	buf = crBufferPoolPop( context->bufpool, hiddenline_spu.buffer_size );
	if (!buf)
	{
		buf = crAlloc( hiddenline_spu.buffer_size );
	}
	crPackInitBuffer( &(context->pack_buffer), buf, hiddenline_spu.buffer_size, hiddenline_spu.buffer_size );
	crPackSetBuffer( context->packer, &(context->pack_buffer) );
}
Esempio n. 4
0
static PVBOXUHGSMI_BUFFER _crVBoxHGSMIBufAlloc(PCRVBOXHGSMI_CLIENT pClient, uint32_t cbSize)
{
    PVBOXUHGSMI_BUFFER buf;
    int rc;

    buf = (PVBOXUHGSMI_BUFFER ) crBufferPoolPop(pClient->bufpool, cbSize);

    if (!buf)
    {
        crDebug("Buffer pool %p was empty; allocating new %d byte buffer.",
                        (void *) pClient->bufpool,
                        cbSize);
        rc = pClient->pHgsmi->pfnBufferCreate(pClient->pHgsmi, cbSize,
                                VBOXUHGSMI_SYNCHOBJECT_TYPE_NONE, NULL,
                                &buf);
        AssertRC(rc);
        if (RT_FAILURE(rc))
            crWarning("Failed to Create a buffer of size(%d), rc(%d)\n", cbSize, rc);
    }
    return buf;
}
Esempio n. 5
0
static CRVBOXHGSMIBUFFER* _crVBoxHGSMISysMemAlloc(uint32_t cbSize)
{
    CRVBOXHGSMIBUFFER *pBuf;
#ifdef CHROMIUM_THREADSAFE
    crLockMutex(&g_crvboxhgsmi.mutex);
#endif
    pBuf = crBufferPoolPop(g_crvboxhgsmi.mempool, cbSize);
    if (!pBuf)
    {
        pBuf = (CRVBOXHGSMIBUFFER*)crAlloc(CRVBOXHGSMI_BUF_HDR_SIZE() + cbSize);
        Assert(pBuf);
        if (pBuf)
        {
            pBuf->magic = CR_VBOXHGSMI_BUFFER_MAGIC;
            pBuf->cbLock = cbSize;
            pBuf->bIsBuf = false;
            pBuf->u32Len = 0;
        }
    }
#ifdef CHROMIUM_THREADSAFE
    crUnlockMutex(&g_crvboxhgsmi.mutex);
#endif
    return pBuf;
}