- malloc replacements
[sip-router] / q_malloc.h
1 /* $Id$
2  *
3  * simple & fast malloc library
4  */
5
6 #ifndef q_malloc_h
7 #define q_malloc_h
8
9
10 struct qm_frag{
11         unsigned int size;
12         union{
13                 struct qm_frag* nxt_free;
14                 int is_free;
15         }u;
16 };
17
18 struct qm_frag_end{
19         unsigned int size;
20         struct qm_frag* prev_free;
21 };
22
23
24 struct qm_block{
25         unsigned int init_size;
26         unsigned int size; /* total size */
27         unsigned int used; /* alloc'ed size*/
28         unsigned int real_used; /* used+malloc overhead*/
29         
30         struct qm_frag* first_frag;
31         struct qm_frag_end* last_frag_end;
32         
33         struct qm_frag free_lst;
34         struct qm_frag_end free_lst_end;
35 };
36
37
38
39 struct qm_block* qm_malloc_init(char* address, unsigned int size);
40 void* qm_malloc(struct qm_block*, unsigned int size);
41 void  qm_free(struct qm_block*, void* p);
42 void  qm_status(struct qm_block*);
43
44
45 #endif