Commit fe60928f authored by unknown's avatar unknown

Merge marko@build.mysql.com:/home/bk/mysql-4.0

into hundin.mysql.fi:/home/marko/l/mysql-4.0

parents a3ee065b 2c9487ab
...@@ -7,6 +7,7 @@ compilation module but is included in mem0mem.*. ...@@ -7,6 +7,7 @@ compilation module but is included in mem0mem.*.
Created 6/8/1994 Heikki Tuuri Created 6/8/1994 Heikki Tuuri
*************************************************************************/ *************************************************************************/
#ifdef UNIV_MEM_DEBUG
extern mutex_t mem_hash_mutex; extern mutex_t mem_hash_mutex;
extern ulint mem_current_allocated_memory; extern ulint mem_current_allocated_memory;
...@@ -89,3 +90,4 @@ mem_field_trailer_set_check(byte* field, ulint check); ...@@ -89,3 +90,4 @@ mem_field_trailer_set_check(byte* field, ulint check);
ulint ulint
mem_field_trailer_get_check(byte* field); mem_field_trailer_get_check(byte* field);
#endif /* UNIV_MEM_DEBUG */
...@@ -7,6 +7,7 @@ but is included in mem0mem.* ! ...@@ -7,6 +7,7 @@ but is included in mem0mem.* !
Created 6/9/1994 Heikki Tuuri Created 6/9/1994 Heikki Tuuri
*************************************************************************/ *************************************************************************/
#ifdef UNIV_MEM_DEBUG
mutex_t mem_hash_mutex; /* The mutex which protects in the mutex_t mem_hash_mutex; /* The mutex which protects in the
debug version the hash table containing debug version the hash table containing
the list of live memory heaps, and the list of live memory heaps, and
...@@ -16,12 +17,11 @@ mutex_t mem_hash_mutex; /* The mutex which protects in the ...@@ -16,12 +17,11 @@ mutex_t mem_hash_mutex; /* The mutex which protects in the
extent of memory allocations. Only used in the debug version. extent of memory allocations. Only used in the debug version.
Protected by mem_hash_mutex above. */ Protected by mem_hash_mutex above. */
ulint mem_n_created_heaps = 0; static ulint mem_n_created_heaps = 0;
ulint mem_n_allocations = 0; static ulint mem_n_allocations = 0;
ulint mem_total_allocated_memory = 0; static ulint mem_total_allocated_memory = 0;
ulint mem_current_allocated_memory = 0; static ulint mem_current_allocated_memory = 0;
ulint mem_max_allocated_memory = 0; static ulint mem_max_allocated_memory = 0;
ulint mem_last_print_info = 0;
/* Size of the hash table for memory management tracking */ /* Size of the hash table for memory management tracking */
#define MEM_HASH_SIZE 997 #define MEM_HASH_SIZE 997
...@@ -43,12 +43,12 @@ struct mem_hash_node_struct { ...@@ -43,12 +43,12 @@ struct mem_hash_node_struct {
typedef UT_LIST_BASE_NODE_T(mem_hash_node_t) mem_hash_cell_t; typedef UT_LIST_BASE_NODE_T(mem_hash_node_t) mem_hash_cell_t;
/* The hash table of allocated heaps */ /* The hash table of allocated heaps */
mem_hash_cell_t mem_hash_table[MEM_HASH_SIZE]; static mem_hash_cell_t mem_hash_table[MEM_HASH_SIZE];
/* The base node of the list of all allocated heaps */ /* The base node of the list of all allocated heaps */
mem_hash_cell_t mem_all_list_base; static mem_hash_cell_t mem_all_list_base;
ibool mem_hash_initialized = FALSE; static ibool mem_hash_initialized = FALSE;
UNIV_INLINE UNIV_INLINE
...@@ -65,14 +65,13 @@ mem_hash_get_nth_cell(ulint i) ...@@ -65,14 +65,13 @@ mem_hash_get_nth_cell(ulint i)
return(&(mem_hash_table[i])); return(&(mem_hash_table[i]));
} }
#endif /* UNIV_MEM_DEBUG */
/* Accessor functions for a memory field in the debug version */ /* Accessor functions for a memory field in the debug version */
void void
mem_field_header_set_len(byte* field, ulint len) mem_field_header_set_len(byte* field, ulint len)
{ {
ut_ad(len >= 0);
mach_write_to_4(field - 2 * sizeof(ulint), len); mach_write_to_4(field - 2 * sizeof(ulint), len);
} }
...@@ -164,6 +163,7 @@ mem_field_init( ...@@ -164,6 +163,7 @@ mem_field_init(
mem_field_header_set_check(usr_buf, rnd); mem_field_header_set_check(usr_buf, rnd);
mem_field_trailer_set_check(usr_buf, rnd); mem_field_trailer_set_check(usr_buf, rnd);
#ifdef UNIV_MEM_DEBUG
/* Update the memory allocation information */ /* Update the memory allocation information */
mutex_enter(&mem_hash_mutex); mutex_enter(&mem_hash_mutex);
...@@ -182,6 +182,7 @@ mem_field_init( ...@@ -182,6 +182,7 @@ mem_field_init(
combination of 0xBA and 0xBE */ combination of 0xBA and 0xBE */
mem_init_buf(usr_buf, n); mem_init_buf(usr_buf, n);
#endif /* UNIV_MEM_DEBUG */
} }
/********************************************************************** /**********************************************************************
...@@ -191,12 +192,14 @@ void ...@@ -191,12 +192,14 @@ void
mem_field_erase( mem_field_erase(
/*============*/ /*============*/
byte* buf, /* in: memory field */ byte* buf, /* in: memory field */
ulint n) /* in: how many bytes the user requested */ ulint n __attribute__((unused)))
/* in: how many bytes the user requested */
{ {
byte* usr_buf; byte* usr_buf;
usr_buf = buf + MEM_FIELD_HEADER_SIZE; usr_buf = buf + MEM_FIELD_HEADER_SIZE;
#ifdef UNIV_MEM_DEBUG
mutex_enter(&mem_hash_mutex); mutex_enter(&mem_hash_mutex);
mem_current_allocated_memory -= n; mem_current_allocated_memory -= n;
mutex_exit(&mem_hash_mutex); mutex_exit(&mem_hash_mutex);
...@@ -208,8 +211,10 @@ mem_field_erase( ...@@ -208,8 +211,10 @@ mem_field_erase(
combination of 0xDE and 0xAD */ combination of 0xDE and 0xAD */
mem_erase_buf(buf, MEM_SPACE_NEEDED(n)); mem_erase_buf(buf, MEM_SPACE_NEEDED(n));
#endif /* UNIV_MEM_DEBUG */
} }
#ifdef UNIV_MEM_DEBUG
/******************************************************************* /*******************************************************************
Initializes a buffer to a random combination of hex BA and BE. Initializes a buffer to a random combination of hex BA and BE.
Used to initialize allocated memory. */ Used to initialize allocated memory. */
...@@ -370,6 +375,7 @@ mem_hash_remove( ...@@ -370,6 +375,7 @@ mem_hash_remove(
mutex_exit(&mem_hash_mutex); mutex_exit(&mem_hash_mutex);
} }
#endif /* UNIV_MEM_DEBUG */
/******************************************************************* /*******************************************************************
Checks a memory heap for consistency and prints the contents if requested. Checks a memory heap for consistency and prints the contents if requested.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment