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 ); }
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 ); }
/* * 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) ); }
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; }
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; }