1e46bb3bb5
Previously, ring buffer had capacity of provided buffer size - 1. This trick was used to distinguish between empty and full states. It had one drawback: ring buffer could not be used as a pool of equal sized buffers (using ring_buf_put_claim and ring_buf_get_claim). Reworked internals to use non wrapping head and tail. Since they are non wrapping, there is no issue with distinguishing between empty and full. Since this appraoch would be vulnerable to wrapping on 32 bit boundary, added a mechanism which periodically reduces all indexes to avoid 32 bit wrapping. After this rework, buffer has one byte more capacity. Simple test shows slight performance improvement. Updated tests to reflect increased capacity and added test to check if it is possible to continuesly allocated 2 buffers of half ring buffer size. Signed-off-by: Krzysztof Chruscinski <krzysztof.chruscinski@nordicsemi.no> |
||
---|---|---|
.. | ||
cmsis_rtos_v1 | ||
cmsis_rtos_v2 | ||
fnmatch | ||
gui | ||
libc | ||
open-amp | ||
os | ||
posix | ||
CMakeLists.txt | ||
Kconfig |