#ifndef _BUFFER_H_ #define _BUFFER_H_ #include #include #include #include #include "linux_list.h" struct buffer { pthread_mutex_t lock; size_t max_size; size_t cur_size; struct list_head head; }; struct buffer_node { struct list_head head; size_t size; char data[0]; }; struct buffer *buffer_create(size_t max_size); void buffer_destroy(struct buffer *b); int buffer_add(struct buffer *b, const void *data, size_t size); void buffer_del(struct buffer *b, void *data); void __buffer_del(struct buffer *b, void *data); void buffer_iterate(struct buffer *b, void *data, int (*iterate)(void *data1, void *data2)); #endif