mem0dbg.ic 3.72 KB
Newer Older
1 2
/*****************************************************************************

3
Copyright (c) 1994, 2010, Innobase Oy. All Rights Reserved.
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; version 2 of the License.

This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA

*****************************************************************************/

19 20
/********************************************************************//**
@file include/mem0dbg.ic
osku's avatar
osku committed
21 22 23 24 25 26 27 28 29
The memory management: the debug code. This is not an independent
compilation module but is included in mem0mem.*.

Created 6/8/1994 Heikki Tuuri
*************************************************************************/

#ifdef UNIV_MEM_DEBUG
extern ulint	mem_current_allocated_memory;

30
/******************************************************************//**
osku's avatar
osku committed
31
Initializes an allocated memory field in the debug version. */
32
UNIV_INTERN
osku's avatar
osku committed
33 34 35
void
mem_field_init(
/*===========*/
36 37
	byte*	buf,	/*!< in: memory field */
	ulint	n);	/*!< in: how many bytes the user requested */
38
/******************************************************************//**
osku's avatar
osku committed
39
Erases an allocated memory field in the debug version. */
40
UNIV_INTERN
osku's avatar
osku committed
41 42 43
void
mem_field_erase(
/*============*/
44 45
	byte*	buf,	/*!< in: memory field */
	ulint	n);	/*!< in: how many bytes the user requested */
46
/***************************************************************//**
osku's avatar
osku committed
47 48
Initializes a buffer to a random combination of hex BA and BE.
Used to initialize allocated memory. */
49
UNIV_INTERN
osku's avatar
osku committed
50 51 52
void
mem_init_buf(
/*=========*/
53 54
	byte*	buf,	/*!< in: pointer to buffer */
	ulint	 n);	 /*!< in: length of buffer */
55
/***************************************************************//**
osku's avatar
osku committed
56
Initializes a buffer to a random combination of hex DE and AD.
57
Used to erase freed memory. */
58
UNIV_INTERN
osku's avatar
osku committed
59 60 61
void
mem_erase_buf(
/*==========*/
62
	byte*	buf,	/*!< in: pointer to buffer */
63 64
	ulint	n);	/*!< in: length of buffer */
/***************************************************************//**
osku's avatar
osku committed
65 66 67
Inserts a created memory heap to the hash table of
current allocated memory heaps.
Initializes the hash table when first called. */
68
UNIV_INTERN
osku's avatar
osku committed
69 70 71
void
mem_hash_insert(
/*============*/
72 73 74
	mem_heap_t*	heap,	   /*!< in: the created heap */
	const char*	file_name, /*!< in: file name of creation */
	ulint		line);	   /*!< in: line where created */
75
/***************************************************************//**
osku's avatar
osku committed
76 77 78 79 80 81 82
Removes a memory heap (which is going to be freed by the caller)
from the list of live memory heaps. Returns the size of the heap
in terms of how much memory in bytes was allocated for the user of
the heap (not the total space occupied by the heap).
Also validates the heap.
NOTE: This function does not free the storage occupied by the
heap itself, only the node in the list of heaps. */
83
UNIV_INTERN
osku's avatar
osku committed
84 85 86
void
mem_hash_remove(
/*============*/
87 88 89
	mem_heap_t*	heap,	   /*!< in: the heap to be freed */
	const char*	file_name, /*!< in: file name of freeing */
	ulint		line);	   /*!< in: line where freed */
osku's avatar
osku committed
90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109


void
mem_field_header_set_len(byte* field, ulint len);

ulint
mem_field_header_get_len(byte* field);

void
mem_field_header_set_check(byte* field, ulint check);

ulint
mem_field_header_get_check(byte* field);

void
mem_field_trailer_set_check(byte* field, ulint check);

ulint
mem_field_trailer_get_check(byte* field);
#endif /* UNIV_MEM_DEBUG */