Hi,
I didn't dig in the code deep yet, but one quick comment about the naming:
'ringbuffer' sounds a bit too generic to me when this implementation
is dedicated to strings. I would try to find something that illustrate
this specialization in the name (so that we don't conflict if we ever
have data ringbuffer or msgb ring buffer or whatever).
I think it should also have the osmo_ prefix in the function / struct names.
Just my 2ct.
Cheers,
Sylvain