Exemplo n.º 1
0
int
ringbuffer_collect(struct ringbuffer * rb) {
	int id = _last_id(rb);
	struct ringbuffer_block *blk = block_ptr(rb, 0);
	do {
		if (blk->length >= sizeof(struct ringbuffer_block) && blk->id == id) {
			blk->id = -1;
		}
		blk = block_next(rb, blk);
	} while(blk);
	return id;
}
Exemplo n.º 2
0
/**	@fn	int ringbuffer_collect(RINGBUFFER * rb) 
 *	@brief 收集最早分配的还在使用的同一id的数据块以便覆盖	 
 *	@param rb	环形缓冲区指针	 
 *	@return	返回该数据块id 
 */
int ringbuffer_collect(RINGBUFFER * rb) 
{
	int id = _last_id(rb);
	RBUF_BLOCK *blk = block_ptr(rb, 0);
	do 
	{
		if (blk->length >= sizeof(RBUF_BLOCK) && blk->id == id) 
		{
			blk->id = -1;
		}
		blk = block_next(rb, blk);
	} while(blk);
	return id;
}