~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to plugin/innobase/include/mem0pool.h

  • Committer: Brian Aker
  • Date: 2009-10-16 10:27:33 UTC
  • mfrom: (1183.1.4 merge)
  • Revision ID: brian@gaz-20091016102733-b10po5oup0hjlilh
Merge Engine changes.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*****************************************************************************
2
 
 
3
 
Copyright (C) 1994, 2009, Innobase Oy. All Rights Reserved.
4
 
 
5
 
This program is free software; you can redistribute it and/or modify it under
6
 
the terms of the GNU General Public License as published by the Free Software
7
 
Foundation; version 2 of the License.
8
 
 
9
 
This program is distributed in the hope that it will be useful, but WITHOUT
10
 
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11
 
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
12
 
 
13
 
You should have received a copy of the GNU General Public License along with
14
 
this program; if not, write to the Free Software Foundation, Inc., 51 Franklin
15
 
St, Fifth Floor, Boston, MA 02110-1301 USA
16
 
 
17
 
*****************************************************************************/
18
 
 
19
 
/**************************************************//**
20
 
@file include/mem0pool.h
21
 
The lowest-level memory management
22
 
 
23
 
Created 6/9/1994 Heikki Tuuri
24
 
*******************************************************/
25
 
 
26
 
#ifndef mem0pool_h
27
 
#define mem0pool_h
28
 
 
29
 
#include "univ.i"
30
 
#include "os0file.h"
31
 
#include "ut0lst.h"
32
 
 
33
 
/** Memory area header */
34
 
typedef struct mem_area_struct  mem_area_t;
35
 
/** Memory pool */
36
 
typedef struct mem_pool_struct  mem_pool_t;
37
 
 
38
 
/** The common memory pool */
39
 
extern mem_pool_t*      mem_comm_pool;
40
 
 
41
 
/** Memory area header */
42
 
 
43
 
struct mem_area_struct{
44
 
        ulint           size_and_free;  /*!< memory area size is obtained by
45
 
                                        anding with ~MEM_AREA_FREE; area in
46
 
                                        a free list if ANDing with
47
 
                                        MEM_AREA_FREE results in nonzero */
48
 
        UT_LIST_NODE_T(mem_area_t)
49
 
                        free_list;      /*!< free list node */
50
 
};
51
 
 
52
 
/** Each memory area takes this many extra bytes for control information */
53
 
#define MEM_AREA_EXTRA_SIZE     (ut_calc_align(sizeof(struct mem_area_struct),\
54
 
                        UNIV_MEM_ALIGNMENT))
55
 
 
56
 
/********************************************************************//**
57
 
Creates a memory pool.
58
 
@return memory pool */
59
 
UNIV_INTERN
60
 
mem_pool_t*
61
 
mem_pool_create(
62
 
/*============*/
63
 
        ulint   size);  /*!< in: pool size in bytes */
64
 
/********************************************************************//**
65
 
Frees a memory pool. */
66
 
UNIV_INTERN
67
 
void
68
 
mem_pool_free(
69
 
/*==========*/
70
 
        mem_pool_t*     pool);  /*!< in, own: memory pool */
71
 
/********************************************************************//**
72
 
Allocates memory from a pool. NOTE: This low-level function should only be
73
 
used in mem0mem.*!
74
 
@return own: allocated memory buffer */
75
 
UNIV_INTERN
76
 
void*
77
 
mem_area_alloc(
78
 
/*===========*/
79
 
        ulint*          psize,  /*!< in: requested size in bytes; for optimum
80
 
                                space usage, the size should be a power of 2
81
 
                                minus MEM_AREA_EXTRA_SIZE;
82
 
                                out: allocated size in bytes (greater than
83
 
                                or equal to the requested size) */
84
 
        mem_pool_t*     pool);  /*!< in: memory pool */
85
 
/********************************************************************//**
86
 
Frees memory to a pool. */
87
 
UNIV_INTERN
88
 
void
89
 
mem_area_free(
90
 
/*==========*/
91
 
        void*           ptr,    /*!< in, own: pointer to allocated memory
92
 
                                buffer */
93
 
        mem_pool_t*     pool);  /*!< in: memory pool */
94
 
/********************************************************************//**
95
 
Returns the amount of reserved memory.
96
 
@return reserved mmeory in bytes */
97
 
UNIV_INTERN
98
 
ulint
99
 
mem_pool_get_reserved(
100
 
/*==================*/
101
 
        mem_pool_t*     pool);  /*!< in: memory pool */
102
 
/********************************************************************//**
103
 
Validates a memory pool.
104
 
@return TRUE if ok */
105
 
UNIV_INTERN
106
 
ibool
107
 
mem_pool_validate(
108
 
/*==============*/
109
 
        mem_pool_t*     pool);  /*!< in: memory pool */
110
 
/********************************************************************//**
111
 
Prints info of a memory pool. */
112
 
UNIV_INTERN
113
 
void
114
 
mem_pool_print_info(
115
 
/*================*/
116
 
        FILE*           outfile,/*!< in: output file to write to */
117
 
        mem_pool_t*     pool);  /*!< in: memory pool */
118
 
 
119
 
 
120
 
#ifndef UNIV_NONINL
121
 
#include "mem0pool.ic"
122
 
#endif
123
 
 
124
 
#endif