* ring block buffer object create * * @param buf_size buffer size * @param blk_max_num max block number * * @return != RT_NULL: ring block buffer object * RT_NULL: create failed */
| 61 | * RT_NULL: create failed |
| 62 | */ |
| 63 | rt_rbb_t rt_rbb_create(rt_size_t buf_size, rt_size_t blk_max_num) |
| 64 | { |
| 65 | rt_rbb_t rbb = RT_NULL; |
| 66 | rt_uint8_t *buf; |
| 67 | rt_rbb_blk_t blk_set; |
| 68 | |
| 69 | rbb = (rt_rbb_t)rt_malloc(sizeof(struct rt_rbb)); |
| 70 | if (!rbb) |
| 71 | { |
| 72 | return RT_NULL; |
| 73 | } |
| 74 | |
| 75 | buf = (rt_uint8_t *)rt_malloc(buf_size); |
| 76 | if (!buf) |
| 77 | { |
| 78 | rt_free(rbb); |
| 79 | return RT_NULL; |
| 80 | } |
| 81 | |
| 82 | blk_set = (rt_rbb_blk_t)rt_malloc(sizeof(struct rt_rbb_blk) * blk_max_num); |
| 83 | if (!blk_set) |
| 84 | { |
| 85 | rt_free(buf); |
| 86 | rt_free(rbb); |
| 87 | return RT_NULL; |
| 88 | } |
| 89 | |
| 90 | rt_rbb_init(rbb, buf, buf_size, blk_set, blk_max_num); |
| 91 | |
| 92 | return rbb; |
| 93 | } |
| 94 | RTM_EXPORT(rt_rbb_create); |
| 95 | |
| 96 | /** |