Lines Matching full:block

16  * ring block buffer object initialization
18 * @param rbb ring block buffer object
21 * @param block_set block set
22 * @param blk_max_num max block number
39 /* initialize block status */ in rt_rbb_init()
48 * ring block buffer object create
51 * @param blk_max_num max block number
53 * @return != NULL: ring block buffer object
90 * ring block buffer object destroy
92 * @param rbb ring block buffer object
123 * Allocate a block by given size. The block will add to blk_list when allocate success.
125 * @param rbb ring block buffer object
126 * @param blk_size block size
130 * @return != NULL: allocated block
230 * put a block to ring block buffer object
232 * @param block the block
234 void rt_rbb_blk_put(rt_rbb_blk_t block) in rt_rbb_blk_put() argument
236 RT_ASSERT(block); in rt_rbb_blk_put()
237 RT_ASSERT(block->status == RT_RBB_BLK_INITED); in rt_rbb_blk_put()
239 block->status = RT_RBB_BLK_PUT; in rt_rbb_blk_put()
244 * get a block from the ring block buffer object
246 * @param rbb ring block buffer object
248 * @return != NULL: block
254 rt_rbb_blk_t block = NULL; in rt_rbb_blk_get() local
266 block = rt_slist_entry(node, struct rt_rbb_blk, list); in rt_rbb_blk_get()
267 if (block->status == RT_RBB_BLK_PUT) in rt_rbb_blk_get()
269 block->status = RT_RBB_BLK_GET; in rt_rbb_blk_get()
274 block = NULL; in rt_rbb_blk_get()
280 return block; in rt_rbb_blk_get()
285 * return the block size
287 * @param block the block
289 * @return block size
291 rt_size_t rt_rbb_blk_size(rt_rbb_blk_t block) in rt_rbb_blk_size() argument
293 RT_ASSERT(block); in rt_rbb_blk_size()
295 return block->size; in rt_rbb_blk_size()
300 * return the block buffer
302 * @param block the block
304 * @return block buffer
306 rt_uint8_t *rt_rbb_blk_buf(rt_rbb_blk_t block) in rt_rbb_blk_buf() argument
308 RT_ASSERT(block); in rt_rbb_blk_buf()
310 return block->buf; in rt_rbb_blk_buf()
315 * free the block
317 * @param rbb ring block buffer object
318 * @param block the block
320 void rt_rbb_blk_free(rt_rbb_t rbb, rt_rbb_blk_t block) in rt_rbb_blk_free() argument
325 RT_ASSERT(block); in rt_rbb_blk_free()
326 RT_ASSERT(block->status != RT_RBB_BLK_UNUSED); in rt_rbb_blk_free()
330 /* remove it on rbb block list */ in rt_rbb_blk_free()
331 rt_slist_remove(&rbb->blk_list, &block->list); in rt_rbb_blk_free()
333 block->status = RT_RBB_BLK_UNUSED; in rt_rbb_blk_free()
340 * get a continuous block to queue by given size
356 * @param rbb ring block buffer object
358 * @param queue continuous block queue
360 * @return the block queue data total size
367 rt_rbb_blk_t last_block = NULL, block; in rt_rbb_blk_queue_get() local
384 /* save the first put status block to queue */ in rt_rbb_blk_queue_get()
390 /* the first block must be put status */ in rt_rbb_blk_queue_get()
397 block = rt_slist_entry(node, struct rt_rbb_blk, list); in rt_rbb_blk_queue_get()
400 * 1. the current block is not put status in rt_rbb_blk_queue_get()
401 * 2. the last block and current block is not continuous in rt_rbb_blk_queue_get()
404 if (block->status != RT_RBB_BLK_PUT || in rt_rbb_blk_queue_get()
405 last_block->buf > block->buf || in rt_rbb_blk_queue_get()
406 data_total_size + block->size > queue_data_len) in rt_rbb_blk_queue_get()
410 /* backup last block */ in rt_rbb_blk_queue_get()
411 last_block = block; in rt_rbb_blk_queue_get()
413 /* remove current block */ in rt_rbb_blk_queue_get()
427 * get all block length on block queue
429 * @param blk_queue the block queue
449 * return the block queue buffer
451 * @param blk_queue the block queue
453 * @return block queue buffer
464 * free the block queue
466 * @param rbb ring block buffer object
467 * @param blk_queue the block queue
484 * The put status and buffer continuous blocks can be make a block queue.
485 * This function will return the length which from next can be make block queue.
487 * @param rbb ring block buffer object
489 * @return the next can be make block queue's length
496 rt_rbb_blk_t last_block = NULL, block; in rt_rbb_next_blk_queue_len() local
512 /* the first block must be put status */ in rt_rbb_next_blk_queue_len()
519 block = rt_slist_entry(node, struct rt_rbb_blk, list); in rt_rbb_next_blk_queue_len()
522 * 1. the current block is not put status in rt_rbb_next_blk_queue_len()
523 * 2. the last block and current block is not continuous in rt_rbb_next_blk_queue_len()
525 if (block->status != RT_RBB_BLK_PUT || last_block->buf > block->buf) in rt_rbb_next_blk_queue_len()
529 /* backup last block */ in rt_rbb_next_blk_queue_len()
530 last_block = block; in rt_rbb_next_blk_queue_len()
542 * get the ring block buffer object buffer size
544 * @param rbb ring block buffer object