• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /**
2  * @file op_growable_buffer.h
3  * a growable buffer interface
4  *
5  * @remark Copyright 2007 OProfile authors
6  * @remark Read the file COPYING
7  *
8  * @author Philippe Elie
9  */
10 
11 #ifndef OP_GROWABLE_BUFFER_H
12 #define OP_GROWABLE_BUFFER_H
13 
14 #include <stddef.h>
15 
16 struct growable_buffer {
17 	void * p;
18 	size_t size;
19 	size_t max_size;
20 };
21 
22 /**
23  * init_buffer - initialize an empty buffer
24  * @param buffer the buffer to initialize
25  *
26  * init_buffer do not do any allocation, the first allocation will occur
27  * when add_data() with a non zero len param will be called.
28  */
29 void init_buffer(struct growable_buffer * buffer);
30 
31 /**
32  * free_buffer - free the memory allocated for this buffer
33  * @param buffer the buffer to free
34  */
35 void free_buffer(struct growable_buffer * buffer);
36 
37 /**
38  * add_data - add data to this buffer
39  * @param b the buffer where to add data
40  * @param data a pointer to the data to add
41  * @param len number of byte to add to the buffer
42  */
43 void add_data(struct growable_buffer * b, void const * data, size_t len);
44 
45 #endif /* !OP_GROWABLE_BUFFER_H */
46