1 | /* Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. |
2 | |
3 | This program is free software; you can redistribute it and/or modify |
4 | it under the terms of the GNU General Public License as published by |
5 | the Free Software Foundation; version 2 of the License. |
6 | |
7 | This program is distributed in the hope that it will be useful, |
8 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
9 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
10 | GNU General Public License for more details. |
11 | |
12 | You should have received a copy of the GNU General Public License |
13 | along with this program; if not, write to the Free Software |
14 | Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ |
15 | |
16 | /* |
17 | Data structures for mysys/my_alloc.c (root memory allocator) |
18 | */ |
19 | |
20 | #ifndef _my_alloc_h |
21 | #define _my_alloc_h |
22 | |
23 | #define ALLOC_MAX_BLOCK_TO_DROP 4096 |
24 | #define ALLOC_MAX_BLOCK_USAGE_BEFORE_DROP 10 |
25 | |
26 | #ifdef __cplusplus |
27 | extern "C" { |
28 | #endif |
29 | |
30 | typedef struct st_used_mem |
31 | { /* struct for once_alloc (block) */ |
32 | struct st_used_mem *next; /* Next block in use */ |
33 | size_t left; /* memory left in block */ |
34 | size_t size; /* size of block */ |
35 | } USED_MEM; |
36 | |
37 | |
38 | typedef struct st_mem_root |
39 | { |
40 | USED_MEM *free; /* blocks with free memory in it */ |
41 | USED_MEM *used; /* blocks almost without free memory */ |
42 | USED_MEM *pre_alloc; /* preallocated block */ |
43 | /* if block have less memory it will be put in 'used' list */ |
44 | size_t min_malloc; |
45 | size_t block_size; /* initial block size */ |
46 | size_t total_alloc; |
47 | unsigned int block_num; /* allocated blocks counter */ |
48 | /* |
49 | first free block in queue test counter (if it exceed |
50 | MAX_BLOCK_USAGE_BEFORE_DROP block will be dropped in 'used' list) |
51 | */ |
52 | unsigned int first_block_usage; |
53 | |
54 | void (*error_handler)(void); |
55 | const char *name; |
56 | } MEM_ROOT; |
57 | |
58 | #ifdef __cplusplus |
59 | } |
60 | #endif |
61 | |
62 | #endif |
63 | |