Цитата(Jenya7 @ Feb 4 2015, 12:25)

мне нужно логировать данные во внешнюю память.
каждая запись это структура. думал сделать circular buffer чтоб можно было читать/писать из разных потоков. вопрос есть ли какая нибудь готовая библиотека чтоб не городить свои велосипеды?
что-то типа:
Код
#define IBUF_LENGTH (32)
#define IBUF_MASK (IBUF_LENGTH-1)
#define OBUF_LENGTH (32)
#define OBUF_MASK (OBUF_LENGTH-1)
uint32_t ibus_start, ibuf_end, obuf_start, obuf_end;
char BufOut[OBUF_LENGTH];
char BufIn[IBUF_LENGTH];
void obuf_init()
{
obuf_start = obuf_end = 0;
}
void ibuf_init()
{
ibuf_start = ibuf_end = 0;
}
void put(char c)
{
while((ibuf_start+IBUF_LENGTH) == ibuf_end);
BufIn[ibuf_end++ & IBUF_MASK] = c;
}
char get(void)
{
while(obuf_end == obuf_start);
return BufOut[obuf_start++ & OBUF_MASK];
}
на скорую руку, так что проверяйте

недостаток - размер массивов по степени двойки, тип, разумеется, можно сделать какой нужно