-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmem.h
57 lines (47 loc) · 1.5 KB
/
mem.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#ifndef MEMLINK_MEM_H
#define MEMLINK_MEM_H
#include <stdio.h>
#define MEMLINK_MEM_NUM 100
#if defined(__APPLE__) || defined(__FreeBSD__)
#define fopen64 fopen
#endif
typedef struct _data_block
{
unsigned short data_count; // data count in one block
unsigned short visible_count; // visible item count
unsigned short tagdel_count; // tag delete item count, invisible
struct _data_block *prev;
struct _data_block *next;
char data[0];
}DataBlock;
typedef struct _data_block_one
{
unsigned short data_count; // data count in one block
unsigned short visible_count; // visible item count
unsigned short tagdel_count; // tag delete item count, invisible
char data[0];
}DataBlockOne;
typedef struct _mem_item
{
int memsize;
unsigned int block_count;
unsigned int total;
DataBlock *data;
}MemItem;
typedef struct _mempool
{
MemItem *freemem;
int size; // freemem size
int used; // freemem used size
int blocks;
}MemPool;
//extern MemPool *g_mpool;
MemPool* mempool_create();
DataBlock* mempool_get(MemPool *mp, int blocksize);
DataBlock* mempool_get2(MemPool *mp, int blocks, int datalen);
int mempool_put(MemPool *mp, DataBlock *dbk, int blocksize);
int mempool_put2(MemPool *mp, DataBlock *dbk, int datalen);
int mempool_expand(MemPool *mp);
void mempool_free(MemPool *mp, int blocksize);
void mempool_destroy(MemPool *mp);
#endif