void ringbuffer_free(struct ringbuffer * rb, struct ringbuffer_block * blk) { if (blk == NULL) return; int id = _block_id(blk); blk->id = -1; while (blk->next >= 0) { blk = block_ptr(rb, blk->next); assert(_block_id(blk) == id); blk->id = -1; } }
/** @fn void ringbuffer_free(RINGBUFFER * rb, RBUF_BLOCK * blk) * @brief 将已经断开连接的数据块id置-1 * @param rb 指向ringbuffer的指针 * @param blk 指向已断开连接的第一块数据块 * @return N/A */ void ringbuffer_free(RINGBUFFER * rb, RBUF_BLOCK * blk) { if (blk == NULL) { return; } int id = _block_id(blk); blk->id = -1; while (blk->next >= 0) { blk = block_ptr(rb, blk->next); assert(_block_id(blk) == id); blk->id = -1; } }