Commit a4489d39 authored by marko@hundin.mysql.fi's avatar marko@hundin.mysql.fi

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

into hundin.mysql.fi:/home/marko/j/mysql-4.1
parents 3f685711 a5cca9df
...@@ -399,7 +399,7 @@ btr_cur_search_to_nth_level( ...@@ -399,7 +399,7 @@ btr_cur_search_to_nth_level(
retry_page_get: retry_page_get:
page = buf_page_get_gen(space, page_no, rw_latch, guess, page = buf_page_get_gen(space, page_no, rw_latch, guess,
buf_mode, buf_mode,
IB__FILE__, __LINE__, __FILE__, __LINE__,
mtr); mtr);
if (page == NULL) { if (page == NULL) {
/* This must be a search to perform an insert; /* This must be a search to perform an insert;
...@@ -580,7 +580,7 @@ btr_cur_open_at_index_side( ...@@ -580,7 +580,7 @@ btr_cur_open_at_index_side(
for (;;) { for (;;) {
page = buf_page_get_gen(space, page_no, RW_NO_LATCH, NULL, page = buf_page_get_gen(space, page_no, RW_NO_LATCH, NULL,
BUF_GET, BUF_GET,
IB__FILE__, __LINE__, __FILE__, __LINE__,
mtr); mtr);
ut_ad(0 == ut_dulint_cmp(tree->id, ut_ad(0 == ut_dulint_cmp(tree->id,
btr_page_get_index_id(page))); btr_page_get_index_id(page)));
...@@ -689,7 +689,7 @@ btr_cur_open_at_rnd_pos( ...@@ -689,7 +689,7 @@ btr_cur_open_at_rnd_pos(
for (;;) { for (;;) {
page = buf_page_get_gen(space, page_no, RW_NO_LATCH, NULL, page = buf_page_get_gen(space, page_no, RW_NO_LATCH, NULL,
BUF_GET, BUF_GET,
IB__FILE__, __LINE__, __FILE__, __LINE__,
mtr); mtr);
ut_ad(0 == ut_dulint_cmp(tree->id, ut_ad(0 == ut_dulint_cmp(tree->id,
btr_page_get_index_id(page))); btr_page_get_index_id(page)));
......
...@@ -764,7 +764,7 @@ btr_search_guess_on_hash( ...@@ -764,7 +764,7 @@ btr_search_guess_on_hash(
success = buf_page_get_known_nowait(latch_mode, page, success = buf_page_get_known_nowait(latch_mode, page,
BUF_MAKE_YOUNG, BUF_MAKE_YOUNG,
IB__FILE__, __LINE__, __FILE__, __LINE__,
mtr); mtr);
rw_lock_s_unlock(&btr_search_latch); rw_lock_s_unlock(&btr_search_latch);
...@@ -1048,7 +1048,7 @@ btr_search_drop_page_hash_when_freed( ...@@ -1048,7 +1048,7 @@ btr_search_drop_page_hash_when_freed(
having to fear a deadlock. */ having to fear a deadlock. */
page = buf_page_get_gen(space, page_no, RW_S_LATCH, NULL, page = buf_page_get_gen(space, page_no, RW_S_LATCH, NULL,
BUF_GET_IF_IN_POOL, IB__FILE__, __LINE__, BUF_GET_IF_IN_POOL, __FILE__, __LINE__,
&mtr); &mtr);
#ifdef UNIV_SYNC_DEBUG #ifdef UNIV_SYNC_DEBUG
......
...@@ -1048,7 +1048,7 @@ buf_page_get_gen( ...@@ -1048,7 +1048,7 @@ buf_page_get_gen(
buf_frame_t* guess, /* in: guessed frame or NULL */ buf_frame_t* guess, /* in: guessed frame or NULL */
ulint mode, /* in: BUF_GET, BUF_GET_IF_IN_POOL, ulint mode, /* in: BUF_GET, BUF_GET_IF_IN_POOL,
BUF_GET_NO_LATCH, BUF_GET_NOWAIT */ BUF_GET_NO_LATCH, BUF_GET_NOWAIT */
char* file, /* in: file name */ const char* file, /* in: file name */
ulint line, /* in: line where called */ ulint line, /* in: line where called */
mtr_t* mtr) /* in: mini-transaction */ mtr_t* mtr) /* in: mini-transaction */
{ {
...@@ -1257,7 +1257,7 @@ buf_page_optimistic_get_func( ...@@ -1257,7 +1257,7 @@ buf_page_optimistic_get_func(
frames */ frames */
dulint modify_clock,/* in: modify clock value if mode is dulint modify_clock,/* in: modify clock value if mode is
..._GUESS_ON_CLOCK */ ..._GUESS_ON_CLOCK */
char* file, /* in: file name */ const char* file, /* in: file name */
ulint line, /* in: line where called */ ulint line, /* in: line where called */
mtr_t* mtr) /* in: mini-transaction */ mtr_t* mtr) /* in: mini-transaction */
{ {
...@@ -1382,7 +1382,7 @@ buf_page_get_known_nowait( ...@@ -1382,7 +1382,7 @@ buf_page_get_known_nowait(
ulint rw_latch,/* in: RW_S_LATCH, RW_X_LATCH */ ulint rw_latch,/* in: RW_S_LATCH, RW_X_LATCH */
buf_frame_t* guess, /* in: the known page frame */ buf_frame_t* guess, /* in: the known page frame */
ulint mode, /* in: BUF_MAKE_YOUNG or BUF_KEEP_OLD */ ulint mode, /* in: BUF_MAKE_YOUNG or BUF_KEEP_OLD */
char* file, /* in: file name */ const char* file, /* in: file name */
ulint line, /* in: line where called */ ulint line, /* in: line where called */
mtr_t* mtr) /* in: mini-transaction */ mtr_t* mtr) /* in: mini-transaction */
{ {
...@@ -1742,7 +1742,7 @@ buf_page_create( ...@@ -1742,7 +1742,7 @@ buf_page_create(
buf_LRU_add_block(block, FALSE); buf_LRU_add_block(block, FALSE);
#ifdef UNIV_SYNC_DEBUG #ifdef UNIV_SYNC_DEBUG
buf_block_buf_fix_inc_debug(block, IB__FILE__, __LINE__); buf_block_buf_fix_inc_debug(block, __FILE__, __LINE__);
#else #else
buf_block_buf_fix_inc(block); buf_block_buf_fix_inc(block);
#endif #endif
......
...@@ -3042,7 +3042,7 @@ loop: ...@@ -3042,7 +3042,7 @@ loop:
if (page) { if (page) {
ibool success = buf_page_get_known_nowait(RW_X_LATCH, page, ibool success = buf_page_get_known_nowait(RW_X_LATCH, page,
BUF_KEEP_OLD, BUF_KEEP_OLD,
IB__FILE__, __LINE__, __FILE__, __LINE__,
&mtr); &mtr);
ut_a(success); ut_a(success);
#ifdef UNIV_SYNC_DEBUG #ifdef UNIV_SYNC_DEBUG
......
...@@ -132,7 +132,7 @@ to improve debugging. Only values RW_S_LATCH and RW_X_LATCH are allowed ...@@ -132,7 +132,7 @@ to improve debugging. Only values RW_S_LATCH and RW_X_LATCH are allowed
in LA! */ in LA! */
#define buf_page_get(SP, OF, LA, MTR) buf_page_get_gen(\ #define buf_page_get(SP, OF, LA, MTR) buf_page_get_gen(\
SP, OF, LA, NULL,\ SP, OF, LA, NULL,\
BUF_GET, IB__FILE__, __LINE__, MTR) BUF_GET, __FILE__, __LINE__, MTR)
/****************************************************************** /******************************************************************
Use these macros to bufferfix a page with no latching. Remember not to Use these macros to bufferfix a page with no latching. Remember not to
read the contents of the page unless you know it is safe. Do not modify read the contents of the page unless you know it is safe. Do not modify
...@@ -141,19 +141,19 @@ error-prone programming not to set a latch, and it should be used ...@@ -141,19 +141,19 @@ error-prone programming not to set a latch, and it should be used
with care. */ with care. */
#define buf_page_get_with_no_latch(SP, OF, MTR) buf_page_get_gen(\ #define buf_page_get_with_no_latch(SP, OF, MTR) buf_page_get_gen(\
SP, OF, RW_NO_LATCH, NULL,\ SP, OF, RW_NO_LATCH, NULL,\
BUF_GET_NO_LATCH, IB__FILE__, __LINE__, MTR) BUF_GET_NO_LATCH, __FILE__, __LINE__, MTR)
/****************************************************************** /******************************************************************
NOTE! The following macros should be used instead of buf_page_get_gen, to NOTE! The following macros should be used instead of buf_page_get_gen, to
improve debugging. Only values RW_S_LATCH and RW_X_LATCH are allowed as LA! */ improve debugging. Only values RW_S_LATCH and RW_X_LATCH are allowed as LA! */
#define buf_page_get_nowait(SP, OF, LA, MTR) buf_page_get_gen(\ #define buf_page_get_nowait(SP, OF, LA, MTR) buf_page_get_gen(\
SP, OF, LA, NULL,\ SP, OF, LA, NULL,\
BUF_GET_NOWAIT, IB__FILE__, __LINE__, MTR) BUF_GET_NOWAIT, __FILE__, __LINE__, MTR)
/****************************************************************** /******************************************************************
NOTE! The following macros should be used instead of NOTE! The following macros should be used instead of
buf_page_optimistic_get_func, to improve debugging. Only values RW_S_LATCH and buf_page_optimistic_get_func, to improve debugging. Only values RW_S_LATCH and
RW_X_LATCH are allowed as LA! */ RW_X_LATCH are allowed as LA! */
#define buf_page_optimistic_get(LA, BL, G, MC, MTR) buf_page_optimistic_get_func(\ #define buf_page_optimistic_get(LA, BL, G, MC, MTR) buf_page_optimistic_get_func(\
LA, BL, G, MC, IB__FILE__, __LINE__, MTR) LA, BL, G, MC, __FILE__, __LINE__, MTR)
/************************************************************************ /************************************************************************
This is the general function used to get optimistic access to a database This is the general function used to get optimistic access to a database
page. */ page. */
...@@ -168,7 +168,7 @@ buf_page_optimistic_get_func( ...@@ -168,7 +168,7 @@ buf_page_optimistic_get_func(
frames */ frames */
dulint modify_clock,/* in: modify clock value if mode is dulint modify_clock,/* in: modify clock value if mode is
..._GUESS_ON_CLOCK */ ..._GUESS_ON_CLOCK */
char* file, /* in: file name */ const char* file, /* in: file name */
ulint line, /* in: line where called */ ulint line, /* in: line where called */
mtr_t* mtr); /* in: mini-transaction */ mtr_t* mtr); /* in: mini-transaction */
/************************************************************************ /************************************************************************
...@@ -201,7 +201,7 @@ buf_page_get_known_nowait( ...@@ -201,7 +201,7 @@ buf_page_get_known_nowait(
ulint rw_latch,/* in: RW_S_LATCH, RW_X_LATCH */ ulint rw_latch,/* in: RW_S_LATCH, RW_X_LATCH */
buf_frame_t* guess, /* in: the known page frame */ buf_frame_t* guess, /* in: the known page frame */
ulint mode, /* in: BUF_MAKE_YOUNG or BUF_KEEP_OLD */ ulint mode, /* in: BUF_MAKE_YOUNG or BUF_KEEP_OLD */
char* file, /* in: file name */ const char* file, /* in: file name */
ulint line, /* in: line where called */ ulint line, /* in: line where called */
mtr_t* mtr); /* in: mini-transaction */ mtr_t* mtr); /* in: mini-transaction */
/************************************************************************ /************************************************************************
...@@ -217,7 +217,7 @@ buf_page_get_gen( ...@@ -217,7 +217,7 @@ buf_page_get_gen(
buf_frame_t* guess, /* in: guessed frame or NULL */ buf_frame_t* guess, /* in: guessed frame or NULL */
ulint mode, /* in: BUF_GET, BUF_GET_IF_IN_POOL, ulint mode, /* in: BUF_GET, BUF_GET_IF_IN_POOL,
BUF_GET_NO_LATCH */ BUF_GET_NO_LATCH */
char* file, /* in: file name */ const char* file, /* in: file name */
ulint line, /* in: line where called */ ulint line, /* in: line where called */
mtr_t* mtr); /* in: mini-transaction */ mtr_t* mtr); /* in: mini-transaction */
/************************************************************************ /************************************************************************
......
...@@ -585,7 +585,7 @@ buf_page_get_release_on_io( ...@@ -585,7 +585,7 @@ buf_page_get_release_on_io(
frame = buf_page_get_gen(space, offset, rw_latch, guess, frame = buf_page_get_gen(space, offset, rw_latch, guess,
BUF_GET_IF_IN_POOL, BUF_GET_IF_IN_POOL,
IB__FILE__, __LINE__, __FILE__, __LINE__,
mtr); mtr);
if (frame != NULL) { if (frame != NULL) {
......
...@@ -64,14 +64,14 @@ heap creation. */ ...@@ -64,14 +64,14 @@ heap creation. */
#define mem_heap_create(N) mem_heap_create_func(\ #define mem_heap_create(N) mem_heap_create_func(\
(N), NULL, MEM_HEAP_DYNAMIC,\ (N), NULL, MEM_HEAP_DYNAMIC,\
IB__FILE__, __LINE__) __FILE__, __LINE__)
/****************************************************************** /******************************************************************
Use this macro instead of the corresponding function! Macro for memory Use this macro instead of the corresponding function! Macro for memory
heap creation. */ heap creation. */
#define mem_heap_create_in_buffer(N) mem_heap_create_func(\ #define mem_heap_create_in_buffer(N) mem_heap_create_func(\
(N), NULL, MEM_HEAP_BUFFER,\ (N), NULL, MEM_HEAP_BUFFER,\
IB__FILE__, __LINE__) __FILE__, __LINE__)
/****************************************************************** /******************************************************************
Use this macro instead of the corresponding function! Macro for memory Use this macro instead of the corresponding function! Macro for memory
heap creation. */ heap creation. */
...@@ -79,7 +79,7 @@ heap creation. */ ...@@ -79,7 +79,7 @@ heap creation. */
#define mem_heap_create_in_btr_search(N) mem_heap_create_func(\ #define mem_heap_create_in_btr_search(N) mem_heap_create_func(\
(N), NULL, MEM_HEAP_BTR_SEARCH |\ (N), NULL, MEM_HEAP_BTR_SEARCH |\
MEM_HEAP_BUFFER,\ MEM_HEAP_BUFFER,\
IB__FILE__, __LINE__) __FILE__, __LINE__)
/****************************************************************** /******************************************************************
Use this macro instead of the corresponding function! Macro for fast Use this macro instead of the corresponding function! Macro for fast
memory heap creation. An initial block of memory B is given by the memory heap creation. An initial block of memory B is given by the
...@@ -88,14 +88,14 @@ mem_heap_free. See the parameter comment in mem_heap_create_func below. */ ...@@ -88,14 +88,14 @@ mem_heap_free. See the parameter comment in mem_heap_create_func below. */
#define mem_heap_fast_create(N, B) mem_heap_create_func(\ #define mem_heap_fast_create(N, B) mem_heap_create_func(\
(N), (B), MEM_HEAP_DYNAMIC,\ (N), (B), MEM_HEAP_DYNAMIC,\
IB__FILE__, __LINE__) __FILE__, __LINE__)
/****************************************************************** /******************************************************************
Use this macro instead of the corresponding function! Macro for memory Use this macro instead of the corresponding function! Macro for memory
heap freeing. */ heap freeing. */
#define mem_heap_free(heap) mem_heap_free_func(\ #define mem_heap_free(heap) mem_heap_free_func(\
(heap), IB__FILE__, __LINE__) (heap), __FILE__, __LINE__)
/********************************************************************* /*********************************************************************
NOTE: Use the corresponding macros instead of this function. Creates a NOTE: Use the corresponding macros instead of this function. Creates a
memory heap which allocates memory from dynamic space. For debugging memory heap which allocates memory from dynamic space. For debugging
...@@ -105,26 +105,27 @@ UNIV_INLINE ...@@ -105,26 +105,27 @@ UNIV_INLINE
mem_heap_t* mem_heap_t*
mem_heap_create_func( mem_heap_create_func(
/*=================*/ /*=================*/
/* out, own: memory heap */ /* out, own: memory heap */
ulint n, /* in: desired start block size, ulint n, /* in: desired start block size,
this means that a single user buffer this means that a single user buffer
of size n will fit in the block, of size n will fit in the block,
0 creates a default size block; 0 creates a default size block;
if init_block is not NULL, n tells if init_block is not NULL, n tells
its size in bytes */ its size in bytes */
void* init_block, /* in: if very fast creation is void* init_block, /* in: if very fast creation is
wanted, the caller can reserve some wanted, the caller can reserve some
memory from its stack, for example, memory from its stack, for example,
and pass it as the the initial block and pass it as the the initial block
to the heap: then no OS call of malloc to the heap: then no OS call of malloc
is needed at the creation. CAUTION: is needed at the creation. CAUTION:
the caller must make sure the initial the caller must make sure the initial
block is not unintentionally erased block is not unintentionally erased
(if allocated in the stack), before (if allocated in the stack), before
the memory heap is explicitly freed. */ the memory heap is explicitly freed. */
ulint type, /* in: MEM_HEAP_DYNAMIC or MEM_HEAP_BUFFER */ ulint type, /* in: MEM_HEAP_DYNAMIC
char* file_name, /* in: file name where created */ or MEM_HEAP_BUFFER */
ulint line /* in: line where created */ const char* file_name, /* in: file name where created */
ulint line /* in: line where created */
); );
/********************************************************************* /*********************************************************************
NOTE: Use the corresponding macro instead of this function. Frees the space NOTE: Use the corresponding macro instead of this function. Frees the space
...@@ -135,7 +136,7 @@ void ...@@ -135,7 +136,7 @@ void
mem_heap_free_func( mem_heap_free_func(
/*===============*/ /*===============*/
mem_heap_t* heap, /* in, own: heap to be freed */ mem_heap_t* heap, /* in, own: heap to be freed */
char* file_name __attribute__((unused)), const char* file_name __attribute__((unused)),
/* in: file name where freed */ /* in: file name where freed */
ulint line __attribute__((unused))); ulint line __attribute__((unused)));
/* in: line where freed */ /* in: line where freed */
...@@ -206,13 +207,13 @@ mem_heap_get_size( ...@@ -206,13 +207,13 @@ mem_heap_get_size(
Use this macro instead of the corresponding function! Use this macro instead of the corresponding function!
Macro for memory buffer allocation */ Macro for memory buffer allocation */
#define mem_alloc(N) mem_alloc_func((N), IB__FILE__, __LINE__) #define mem_alloc(N) mem_alloc_func((N), __FILE__, __LINE__)
/****************************************************************** /******************************************************************
Use this macro instead of the corresponding function! Use this macro instead of the corresponding function!
Macro for memory buffer allocation */ Macro for memory buffer allocation */
#define mem_alloc_noninline(N) mem_alloc_func_noninline(\ #define mem_alloc_noninline(N) mem_alloc_func_noninline(\
(N), IB__FILE__, __LINE__) (N), __FILE__, __LINE__)
/******************************************************************* /*******************************************************************
NOTE: Use the corresponding macro instead of this function. NOTE: Use the corresponding macro instead of this function.
Allocates a single buffer of memory from the dynamic memory of Allocates a single buffer of memory from the dynamic memory of
...@@ -222,11 +223,11 @@ UNIV_INLINE ...@@ -222,11 +223,11 @@ UNIV_INLINE
void* void*
mem_alloc_func( mem_alloc_func(
/*===========*/ /*===========*/
/* out, own: free storage, NULL /* out, own: free storage, NULL
if did not succeed */ if did not succeed */
ulint n, /* in: desired number of bytes */ ulint n, /* in: desired number of bytes */
char* file_name, /* in: file name where created */ const char* file_name, /* in: file name where created */
ulint line /* in: line where created */ ulint line /* in: line where created */
); );
/******************************************************************* /*******************************************************************
NOTE: Use the corresponding macro instead of this function. NOTE: Use the corresponding macro instead of this function.
...@@ -237,17 +238,17 @@ with mem_free. */ ...@@ -237,17 +238,17 @@ with mem_free. */
void* void*
mem_alloc_func_noninline( mem_alloc_func_noninline(
/*=====================*/ /*=====================*/
/* out, own: free storage, NULL if did not /* out, own: free storage,
succeed */ NULL if did not succeed */
ulint n, /* in: desired number of bytes */ ulint n, /* in: desired number of bytes */
char* file_name, /* in: file name where created */ const char* file_name, /* in: file name where created */
ulint line /* in: line where created */ ulint line /* in: line where created */
); );
/****************************************************************** /******************************************************************
Use this macro instead of the corresponding function! Use this macro instead of the corresponding function!
Macro for memory buffer freeing */ Macro for memory buffer freeing */
#define mem_free(PTR) mem_free_func((PTR), IB__FILE__, __LINE__) #define mem_free(PTR) mem_free_func((PTR), __FILE__, __LINE__)
/******************************************************************* /*******************************************************************
NOTE: Use the corresponding macro instead of this function. NOTE: Use the corresponding macro instead of this function.
Frees a single buffer of storage from Frees a single buffer of storage from
...@@ -256,9 +257,9 @@ UNIV_INLINE ...@@ -256,9 +257,9 @@ UNIV_INLINE
void void
mem_free_func( mem_free_func(
/*==========*/ /*==========*/
void* ptr, /* in, own: buffer to be freed */ void* ptr, /* in, own: buffer to be freed */
char* file_name, /* in: file name where created */ const char* file_name, /* in: file name where created */
ulint line /* in: line where created */ ulint line /* in: line where created */
); );
/******************************************************************* /*******************************************************************
Implements realloc. */ Implements realloc. */
...@@ -266,11 +267,12 @@ UNIV_INLINE ...@@ -266,11 +267,12 @@ UNIV_INLINE
void* void*
mem_realloc( mem_realloc(
/*========*/ /*========*/
/* out, own: free storage, NULL if did not succeed */ /* out, own: free storage,
void* buf, /* in: pointer to an old buffer */ NULL if did not succeed */
ulint n, /* in: desired number of bytes */ void* buf, /* in: pointer to an old buffer */
char* file_name,/* in: file name where called */ ulint n, /* in: desired number of bytes */
ulint line); /* in: line where called */ const char* file_name, /* in: file name where called */
ulint line); /* in: line where called */
/************************************************************************** /**************************************************************************
Duplicates a NUL-terminated string. */ Duplicates a NUL-terminated string. */
......
...@@ -16,18 +16,18 @@ Creates a memory heap block where data can be allocated. */ ...@@ -16,18 +16,18 @@ Creates a memory heap block where data can be allocated. */
mem_block_t* mem_block_t*
mem_heap_create_block( mem_heap_create_block(
/*==================*/ /*==================*/
/* out, own: memory heap block, NULL if did not /* out, own: memory heap block,
succeed */ NULL if did not succeed */
mem_heap_t* heap,/* in: memory heap or NULL if first block should mem_heap_t* heap, /* in: memory heap or NULL if first block
be created */ should be created */
ulint n, /* in: number of bytes needed for user data, or ulint n, /* in: number of bytes needed for user data, or
if init_block is not NULL, its size in bytes */ if init_block is not NULL, its size in bytes */
void* init_block, /* in: init block in fast create, type must be void* init_block, /* in: init block in fast create,
MEM_HEAP_DYNAMIC */ type must be MEM_HEAP_DYNAMIC */
ulint type, /* in: type of heap: MEM_HEAP_DYNAMIC or ulint type, /* in: type of heap: MEM_HEAP_DYNAMIC or
MEM_HEAP_BUFFER */ MEM_HEAP_BUFFER */
char* file_name,/* in: file name where created */ const char* file_name,/* in: file name where created */
ulint line); /* in: line where created */ ulint line); /* in: line where created */
/********************************************************************** /**********************************************************************
Frees a block from a memory heap. */ Frees a block from a memory heap. */
...@@ -377,27 +377,27 @@ UNIV_INLINE ...@@ -377,27 +377,27 @@ UNIV_INLINE
mem_heap_t* mem_heap_t*
mem_heap_create_func( mem_heap_create_func(
/*=================*/ /*=================*/
/* out, own: memory heap */ /* out, own: memory heap */
ulint n, /* in: desired start block size, ulint n, /* in: desired start block size,
this means that a single user buffer this means that a single user buffer
of size n will fit in the block, of size n will fit in the block,
0 creates a default size block; 0 creates a default size block;
if init_block is not NULL, n tells if init_block is not NULL, n tells
its size in bytes */ its size in bytes */
void* init_block, /* in: if very fast creation is void* init_block, /* in: if very fast creation is
wanted, the caller can reserve some wanted, the caller can reserve some
memory from its stack, for example, memory from its stack, for example,
and pass it as the the initial block and pass it as the the initial block
to the heap: then no OS call of malloc to the heap: then no OS call of malloc
is needed at the creation. CAUTION: is needed at the creation. CAUTION:
the caller must make sure the initial the caller must make sure the initial
block is not unintentionally erased block is not unintentionally erased
(if allocated in the stack), before (if allocated in the stack), before
the memory heap is explicitly freed. */ the memory heap is explicitly freed. */
ulint type, /* in: MEM_HEAP_DYNAMIC, or MEM_HEAP_BUFFER ulint type, /* in: MEM_HEAP_DYNAMIC
possibly ORed to MEM_HEAP_BTR_SEARCH */ or MEM_HEAP_BUFFER */
char* file_name, /* in: file name where created */ const char* file_name, /* in: file name where created */
ulint line /* in: line where created */ ulint line /* in: line where created */
) )
{ {
mem_block_t* block; mem_block_t* block;
...@@ -440,10 +440,9 @@ void ...@@ -440,10 +440,9 @@ void
mem_heap_free_func( mem_heap_free_func(
/*===============*/ /*===============*/
mem_heap_t* heap, /* in, own: heap to be freed */ mem_heap_t* heap, /* in, own: heap to be freed */
char* file_name __attribute__((unused)), const char* file_name __attribute__((unused)),
/* in: file name where freed */ /* in: file name where freed */
ulint line __attribute__((unused))) ulint line __attribute__((unused)))
/* in: line where freed */
{ {
mem_block_t* block; mem_block_t* block;
mem_block_t* prev_block; mem_block_t* prev_block;
...@@ -486,11 +485,11 @@ UNIV_INLINE ...@@ -486,11 +485,11 @@ UNIV_INLINE
void* void*
mem_alloc_func( mem_alloc_func(
/*===========*/ /*===========*/
/* out, own: free storage, NULL if did not /* out, own: free storage, NULL
succeed */ if did not succeed */
ulint n, /* in: desired number of bytes */ ulint n, /* in: desired number of bytes */
char* file_name, /* in: file name where created */ const char* file_name, /* in: file name where created */
ulint line /* in: line where created */ ulint line /* in: line where created */
) )
{ {
mem_heap_t* heap; mem_heap_t* heap;
...@@ -523,9 +522,9 @@ UNIV_INLINE ...@@ -523,9 +522,9 @@ UNIV_INLINE
void void
mem_free_func( mem_free_func(
/*==========*/ /*==========*/
void* ptr, /* in, own: buffer to be freed */ void* ptr, /* in, own: buffer to be freed */
char* file_name, /* in: file name where created */ const char* file_name, /* in: file name where created */
ulint line /* in: line where created */ ulint line /* in: line where created */
) )
{ {
mem_heap_t* heap; mem_heap_t* heap;
...@@ -569,11 +568,12 @@ UNIV_INLINE ...@@ -569,11 +568,12 @@ UNIV_INLINE
void* void*
mem_realloc( mem_realloc(
/*========*/ /*========*/
/* out, own: free storage, NULL if did not succeed */ /* out, own: free storage,
void* buf, /* in: pointer to an old buffer */ NULL if did not succeed */
ulint n, /* in: desired number of bytes */ void* buf, /* in: pointer to an old buffer */
char* file_name,/* in: file name where called */ ulint n, /* in: desired number of bytes */
ulint line) /* in: line where called */ const char* file_name, /* in: file name where called */
ulint line) /* in: line where called */
{ {
mem_free(buf); mem_free(buf);
......
...@@ -198,11 +198,11 @@ mtr_read_dulint( ...@@ -198,11 +198,11 @@ mtr_read_dulint(
mtr_t* mtr); /* in: mini-transaction handle */ mtr_t* mtr); /* in: mini-transaction handle */
/************************************************************************* /*************************************************************************
This macro locks an rw-lock in s-mode. */ This macro locks an rw-lock in s-mode. */
#define mtr_s_lock(B, MTR) mtr_s_lock_func((B), IB__FILE__, __LINE__,\ #define mtr_s_lock(B, MTR) mtr_s_lock_func((B), __FILE__, __LINE__,\
(MTR)) (MTR))
/************************************************************************* /*************************************************************************
This macro locks an rw-lock in x-mode. */ This macro locks an rw-lock in x-mode. */
#define mtr_x_lock(B, MTR) mtr_x_lock_func((B), IB__FILE__, __LINE__,\ #define mtr_x_lock(B, MTR) mtr_x_lock_func((B), __FILE__, __LINE__,\
(MTR)) (MTR))
/************************************************************************* /*************************************************************************
NOTE! Use the macro above! NOTE! Use the macro above!
...@@ -212,7 +212,7 @@ void ...@@ -212,7 +212,7 @@ void
mtr_s_lock_func( mtr_s_lock_func(
/*============*/ /*============*/
rw_lock_t* lock, /* in: rw-lock */ rw_lock_t* lock, /* in: rw-lock */
char* file, /* in: file name */ const char* file, /* in: file name */
ulint line, /* in: line number */ ulint line, /* in: line number */
mtr_t* mtr); /* in: mtr */ mtr_t* mtr); /* in: mtr */
/************************************************************************* /*************************************************************************
...@@ -223,7 +223,7 @@ void ...@@ -223,7 +223,7 @@ void
mtr_x_lock_func( mtr_x_lock_func(
/*============*/ /*============*/
rw_lock_t* lock, /* in: rw-lock */ rw_lock_t* lock, /* in: rw-lock */
char* file, /* in: file name */ const char* file, /* in: file name */
ulint line, /* in: line number */ ulint line, /* in: line number */
mtr_t* mtr); /* in: mtr */ mtr_t* mtr); /* in: mtr */
......
...@@ -217,7 +217,7 @@ void ...@@ -217,7 +217,7 @@ void
mtr_s_lock_func( mtr_s_lock_func(
/*============*/ /*============*/
rw_lock_t* lock, /* in: rw-lock */ rw_lock_t* lock, /* in: rw-lock */
char* file, /* in: file name */ const char* file, /* in: file name */
ulint line, /* in: line number */ ulint line, /* in: line number */
mtr_t* mtr) /* in: mtr */ mtr_t* mtr) /* in: mtr */
{ {
...@@ -236,7 +236,7 @@ void ...@@ -236,7 +236,7 @@ void
mtr_x_lock_func( mtr_x_lock_func(
/*============*/ /*============*/
rw_lock_t* lock, /* in: rw-lock */ rw_lock_t* lock, /* in: rw-lock */
char* file, /* in: file name */ const char* file, /* in: file name */
ulint line, /* in: line number */ ulint line, /* in: line number */
mtr_t* mtr) /* in: mtr */ mtr_t* mtr) /* in: mtr */
{ {
......
...@@ -92,7 +92,7 @@ Called by yyparse on error. */ ...@@ -92,7 +92,7 @@ Called by yyparse on error. */
void void
yyerror( yyerror(
/*====*/ /*====*/
char* s); /* in: error message string */ const char* s); /* in: error message string */
/************************************************************************* /*************************************************************************
Parses a variable declaration. */ Parses a variable declaration. */
......
...@@ -51,7 +51,7 @@ sync_array_reserve_cell( ...@@ -51,7 +51,7 @@ sync_array_reserve_cell(
sync_array_t* arr, /* in: wait array */ sync_array_t* arr, /* in: wait array */
void* object, /* in: pointer to the object to wait for */ void* object, /* in: pointer to the object to wait for */
ulint type, /* in: lock request type */ ulint type, /* in: lock request type */
char* file, /* in: file where requested */ const char* file, /* in: file where requested */
ulint line, /* in: line where requested */ ulint line, /* in: line where requested */
ulint* index); /* out: index of the reserved cell */ ulint* index); /* out: index of the reserved cell */
/********************************************************************** /**********************************************************************
......
...@@ -92,7 +92,7 @@ loop: ...@@ -92,7 +92,7 @@ loop:
loop_count++; loop_count++;
ut_ad(loop_count < 15); ut_ad(loop_count < 15);
if (mutex_enter_nowait(mutex, IB__FILE__, __LINE__) == 0) { if (mutex_enter_nowait(mutex, __FILE__, __LINE__) == 0) {
/* Succeeded! */ /* Succeeded! */
return(0); return(0);
...@@ -105,7 +105,7 @@ loop: ...@@ -105,7 +105,7 @@ loop:
/* Order is important here: FIRST reset event, then set waiters */ /* Order is important here: FIRST reset event, then set waiters */
ip_mutex_set_waiters(ip_mutex, 1); ip_mutex_set_waiters(ip_mutex, 1);
if (mutex_enter_nowait(mutex, IB__FILE__, __LINE__) == 0) { if (mutex_enter_nowait(mutex, __FILE__, __LINE__) == 0) {
/* Succeeded! */ /* Succeeded! */
return(0); return(0);
......
...@@ -62,7 +62,7 @@ location (which must be appropriately aligned). The rw-lock is initialized ...@@ -62,7 +62,7 @@ location (which must be appropriately aligned). The rw-lock is initialized
to the non-locked state. Explicit freeing of the rw-lock with rw_lock_free to the non-locked state. Explicit freeing of the rw-lock with rw_lock_free
is necessary only if the memory block containing it is freed. */ is necessary only if the memory block containing it is freed. */
#define rw_lock_create(L) rw_lock_create_func((L), IB__FILE__, __LINE__) #define rw_lock_create(L) rw_lock_create_func((L), __FILE__, __LINE__)
/*=====================*/ /*=====================*/
/********************************************************************** /**********************************************************************
Creates, or rather, initializes an rw-lock object in a specified memory Creates, or rather, initializes an rw-lock object in a specified memory
...@@ -74,7 +74,7 @@ void ...@@ -74,7 +74,7 @@ void
rw_lock_create_func( rw_lock_create_func(
/*================*/ /*================*/
rw_lock_t* lock, /* in: pointer to memory */ rw_lock_t* lock, /* in: pointer to memory */
char* cfile_name, /* in: file name where created */ const char* cfile_name, /* in: file name where created */
ulint cline); /* in: file line where created */ ulint cline); /* in: file line where created */
/********************************************************************** /**********************************************************************
Calling this function is obligatory only if the memory buffer containing Calling this function is obligatory only if the memory buffer containing
...@@ -100,19 +100,19 @@ NOTE! The following macros should be used in rw s-locking, not the ...@@ -100,19 +100,19 @@ NOTE! The following macros should be used in rw s-locking, not the
corresponding function. */ corresponding function. */
#define rw_lock_s_lock(M) rw_lock_s_lock_func(\ #define rw_lock_s_lock(M) rw_lock_s_lock_func(\
(M), 0, IB__FILE__, __LINE__) (M), 0, __FILE__, __LINE__)
/****************************************************************** /******************************************************************
NOTE! The following macros should be used in rw s-locking, not the NOTE! The following macros should be used in rw s-locking, not the
corresponding function. */ corresponding function. */
#define rw_lock_s_lock_gen(M, P) rw_lock_s_lock_func(\ #define rw_lock_s_lock_gen(M, P) rw_lock_s_lock_func(\
(M), (P), IB__FILE__, __LINE__) (M), (P), __FILE__, __LINE__)
/****************************************************************** /******************************************************************
NOTE! The following macros should be used in rw s-locking, not the NOTE! The following macros should be used in rw s-locking, not the
corresponding function. */ corresponding function. */
#define rw_lock_s_lock_nowait(M) rw_lock_s_lock_func_nowait(\ #define rw_lock_s_lock_nowait(M) rw_lock_s_lock_func_nowait(\
(M), IB__FILE__, __LINE__) (M), __FILE__, __LINE__)
/********************************************************************** /**********************************************************************
NOTE! Use the corresponding macro, not directly this function, except if NOTE! Use the corresponding macro, not directly this function, except if
you supply the file name and line number. Lock an rw-lock in shared mode you supply the file name and line number. Lock an rw-lock in shared mode
...@@ -127,7 +127,7 @@ rw_lock_s_lock_func( ...@@ -127,7 +127,7 @@ rw_lock_s_lock_func(
rw_lock_t* lock, /* in: pointer to rw-lock */ rw_lock_t* lock, /* in: pointer to rw-lock */
ulint pass, /* in: pass value; != 0, if the lock will ulint pass, /* in: pass value; != 0, if the lock will
be passed to another thread to unlock */ be passed to another thread to unlock */
char* file_name,/* in: file name where lock requested */ const char* file_name,/* in: file name where lock requested */
ulint line); /* in: line where requested */ ulint line); /* in: line where requested */
/********************************************************************** /**********************************************************************
NOTE! Use the corresponding macro, not directly this function, except if NOTE! Use the corresponding macro, not directly this function, except if
...@@ -139,7 +139,7 @@ rw_lock_s_lock_func_nowait( ...@@ -139,7 +139,7 @@ rw_lock_s_lock_func_nowait(
/*=======================*/ /*=======================*/
/* out: TRUE if success */ /* out: TRUE if success */
rw_lock_t* lock, /* in: pointer to rw-lock */ rw_lock_t* lock, /* in: pointer to rw-lock */
char* file_name,/* in: file name where lock requested */ const char* file_name,/* in: file name where lock requested */
ulint line); /* in: line where requested */ ulint line); /* in: line where requested */
/********************************************************************** /**********************************************************************
NOTE! Use the corresponding macro, not directly this function! Lock an NOTE! Use the corresponding macro, not directly this function! Lock an
...@@ -151,7 +151,7 @@ rw_lock_x_lock_func_nowait( ...@@ -151,7 +151,7 @@ rw_lock_x_lock_func_nowait(
/*=======================*/ /*=======================*/
/* out: TRUE if success */ /* out: TRUE if success */
rw_lock_t* lock, /* in: pointer to rw-lock */ rw_lock_t* lock, /* in: pointer to rw-lock */
char* file_name,/* in: file name where lock requested */ const char* file_name,/* in: file name where lock requested */
ulint line); /* in: line where requested */ ulint line); /* in: line where requested */
/********************************************************************** /**********************************************************************
Releases a shared mode lock. */ Releases a shared mode lock. */
...@@ -186,19 +186,19 @@ NOTE! The following macro should be used in rw x-locking, not the ...@@ -186,19 +186,19 @@ NOTE! The following macro should be used in rw x-locking, not the
corresponding function. */ corresponding function. */
#define rw_lock_x_lock(M) rw_lock_x_lock_func(\ #define rw_lock_x_lock(M) rw_lock_x_lock_func(\
(M), 0, IB__FILE__, __LINE__) (M), 0, __FILE__, __LINE__)
/****************************************************************** /******************************************************************
NOTE! The following macro should be used in rw x-locking, not the NOTE! The following macro should be used in rw x-locking, not the
corresponding function. */ corresponding function. */
#define rw_lock_x_lock_gen(M, P) rw_lock_x_lock_func(\ #define rw_lock_x_lock_gen(M, P) rw_lock_x_lock_func(\
(M), (P), IB__FILE__, __LINE__) (M), (P), __FILE__, __LINE__)
/****************************************************************** /******************************************************************
NOTE! The following macros should be used in rw x-locking, not the NOTE! The following macros should be used in rw x-locking, not the
corresponding function. */ corresponding function. */
#define rw_lock_x_lock_nowait(M) rw_lock_x_lock_func_nowait(\ #define rw_lock_x_lock_nowait(M) rw_lock_x_lock_func_nowait(\
(M), IB__FILE__, __LINE__) (M), __FILE__, __LINE__)
/********************************************************************** /**********************************************************************
NOTE! Use the corresponding macro, not directly this function! Lock an NOTE! Use the corresponding macro, not directly this function! Lock an
rw-lock in exclusive mode for the current thread. If the rw-lock is locked rw-lock in exclusive mode for the current thread. If the rw-lock is locked
...@@ -215,7 +215,7 @@ rw_lock_x_lock_func( ...@@ -215,7 +215,7 @@ rw_lock_x_lock_func(
rw_lock_t* lock, /* in: pointer to rw-lock */ rw_lock_t* lock, /* in: pointer to rw-lock */
ulint pass, /* in: pass value; != 0, if the lock will ulint pass, /* in: pass value; != 0, if the lock will
be passed to another thread to unlock */ be passed to another thread to unlock */
char* file_name,/* in: file name where lock requested */ const char* file_name,/* in: file name where lock requested */
ulint line); /* in: line where requested */ ulint line); /* in: line where requested */
/********************************************************************** /**********************************************************************
Releases an exclusive mode lock. */ Releases an exclusive mode lock. */
...@@ -253,9 +253,9 @@ UNIV_INLINE ...@@ -253,9 +253,9 @@ UNIV_INLINE
void void
rw_lock_s_lock_direct( rw_lock_s_lock_direct(
/*==================*/ /*==================*/
rw_lock_t* lock /* in: pointer to rw-lock */ rw_lock_t* lock, /* in: pointer to rw-lock */
,char* file_name, /* in: file name where lock requested */ const char* file_name, /* in: file name where requested */
ulint line /* in: line where requested */ ulint line /* in: line where lock requested */
); );
/********************************************************************** /**********************************************************************
Low-level function which locks an rw-lock in x-mode when we know that it Low-level function which locks an rw-lock in x-mode when we know that it
...@@ -265,9 +265,9 @@ UNIV_INLINE ...@@ -265,9 +265,9 @@ UNIV_INLINE
void void
rw_lock_x_lock_direct( rw_lock_x_lock_direct(
/*==================*/ /*==================*/
rw_lock_t* lock /* in: pointer to rw-lock */ rw_lock_t* lock, /* in: pointer to rw-lock */
,char* file_name, /* in: file name where lock requested */ const char* file_name, /* in: file name where requested */
ulint line /* in: line where requested */ ulint line /* in: line where lock requested */
); );
/********************************************************************** /**********************************************************************
This function is used in the insert buffer to move the ownership of an This function is used in the insert buffer to move the ownership of an
...@@ -451,10 +451,10 @@ struct rw_lock_struct { ...@@ -451,10 +451,10 @@ struct rw_lock_struct {
#endif /* UNIV_SYNC_DEBUG */ #endif /* UNIV_SYNC_DEBUG */
ulint level; /* Level in the global latching ulint level; /* Level in the global latching
order; default SYNC_LEVEL_NONE */ order; default SYNC_LEVEL_NONE */
char* cfile_name; /* File name where lock created */ const char* cfile_name;/* File name where lock created */
ulint cline; /* Line where created */ ulint cline; /* Line where created */
char* last_s_file_name;/* File name where last time s-locked */ const char* last_s_file_name;/* File name where last s-locked */
char* last_x_file_name;/* File name where last time x-locked */ const char* last_x_file_name;/* File name where last x-locked */
ulint last_s_line; /* Line number where last time s-locked */ ulint last_s_line; /* Line number where last time s-locked */
ulint last_x_line; /* Line number where last time x-locked */ ulint last_x_line; /* Line number where last time x-locked */
ulint magic_n; ulint magic_n;
...@@ -471,7 +471,7 @@ struct rw_lock_debug_struct { ...@@ -471,7 +471,7 @@ struct rw_lock_debug_struct {
ulint pass; /* Pass value given in the lock operation */ ulint pass; /* Pass value given in the lock operation */
ulint lock_type; /* Type of the lock: RW_LOCK_EX, ulint lock_type; /* Type of the lock: RW_LOCK_EX,
RW_LOCK_SHARED, RW_LOCK_WAIT_EX */ RW_LOCK_SHARED, RW_LOCK_WAIT_EX */
char* file_name; /* File name where the lock was obtained */ const char* file_name;/* File name where the lock was obtained */
ulint line; /* Line where the rw-lock was locked */ ulint line; /* Line where the rw-lock was locked */
UT_LIST_NODE_T(rw_lock_debug_t) list; UT_LIST_NODE_T(rw_lock_debug_t) list;
/* Debug structs are linked in a two-way /* Debug structs are linked in a two-way
......
...@@ -18,7 +18,7 @@ rw_lock_s_lock_spin( ...@@ -18,7 +18,7 @@ rw_lock_s_lock_spin(
rw_lock_t* lock, /* in: pointer to rw-lock */ rw_lock_t* lock, /* in: pointer to rw-lock */
ulint pass, /* in: pass value; != 0, if the lock will ulint pass, /* in: pass value; != 0, if the lock will
be passed to another thread to unlock */ be passed to another thread to unlock */
char* file_name,/* in: file name where lock requested */ const char* file_name,/* in: file name where lock requested */
ulint line); /* in: line where requested */ ulint line); /* in: line where requested */
#ifdef UNIV_SYNC_DEBUG #ifdef UNIV_SYNC_DEBUG
/********************************************************************** /**********************************************************************
...@@ -130,7 +130,7 @@ rw_lock_s_lock_low( ...@@ -130,7 +130,7 @@ rw_lock_s_lock_low(
ulint pass __attribute__((unused)), ulint pass __attribute__((unused)),
/* in: pass value; != 0, if the lock will be /* in: pass value; != 0, if the lock will be
passed to another thread to unlock */ passed to another thread to unlock */
char* file_name, /* in: file name where lock requested */ const char* file_name, /* in: file name where lock requested */
ulint line) /* in: line where requested */ ulint line) /* in: line where requested */
{ {
#ifdef UNIV_SYNC_DEBUG #ifdef UNIV_SYNC_DEBUG
...@@ -163,9 +163,9 @@ UNIV_INLINE ...@@ -163,9 +163,9 @@ UNIV_INLINE
void void
rw_lock_s_lock_direct( rw_lock_s_lock_direct(
/*==================*/ /*==================*/
rw_lock_t* lock, /* in: pointer to rw-lock */ rw_lock_t* lock, /* in: pointer to rw-lock */
char* file_name,/* in: file name where lock requested */ const char* file_name, /* in: file name where requested */
ulint line) /* in: line where requested */ ulint line) /* in: line where lock requested */
{ {
ut_ad(lock->writer == RW_LOCK_NOT_LOCKED); ut_ad(lock->writer == RW_LOCK_NOT_LOCKED);
ut_ad(rw_lock_get_reader_count(lock) == 0); ut_ad(rw_lock_get_reader_count(lock) == 0);
...@@ -189,9 +189,9 @@ UNIV_INLINE ...@@ -189,9 +189,9 @@ UNIV_INLINE
void void
rw_lock_x_lock_direct( rw_lock_x_lock_direct(
/*==================*/ /*==================*/
rw_lock_t* lock, /* in: pointer to rw-lock */ rw_lock_t* lock, /* in: pointer to rw-lock */
char* file_name, /* in: file name where lock requested */ const char* file_name, /* in: file name where requested */
ulint line) /* in: line where requested */ ulint line) /* in: line where lock requested */
{ {
ut_ad(rw_lock_validate(lock)); ut_ad(rw_lock_validate(lock));
ut_ad(rw_lock_get_reader_count(lock) == 0); ut_ad(rw_lock_get_reader_count(lock) == 0);
...@@ -223,7 +223,7 @@ rw_lock_s_lock_func( ...@@ -223,7 +223,7 @@ rw_lock_s_lock_func(
rw_lock_t* lock, /* in: pointer to rw-lock */ rw_lock_t* lock, /* in: pointer to rw-lock */
ulint pass, /* in: pass value; != 0, if the lock will ulint pass, /* in: pass value; != 0, if the lock will
be passed to another thread to unlock */ be passed to another thread to unlock */
char* file_name, /* in: file name where lock requested */ const char* file_name,/* in: file name where lock requested */
ulint line) /* in: line where requested */ ulint line) /* in: line where requested */
{ {
/* NOTE: As we do not know the thread ids for threads which have /* NOTE: As we do not know the thread ids for threads which have
...@@ -267,7 +267,7 @@ rw_lock_s_lock_func_nowait( ...@@ -267,7 +267,7 @@ rw_lock_s_lock_func_nowait(
/*=======================*/ /*=======================*/
/* out: TRUE if success */ /* out: TRUE if success */
rw_lock_t* lock, /* in: pointer to rw-lock */ rw_lock_t* lock, /* in: pointer to rw-lock */
char* file_name,/* in: file name where lock requested */ const char* file_name,/* in: file name where lock requested */
ulint line) /* in: line where requested */ ulint line) /* in: line where requested */
{ {
ibool success = FALSE; ibool success = FALSE;
...@@ -304,7 +304,7 @@ rw_lock_x_lock_func_nowait( ...@@ -304,7 +304,7 @@ rw_lock_x_lock_func_nowait(
/*=======================*/ /*=======================*/
/* out: TRUE if success */ /* out: TRUE if success */
rw_lock_t* lock, /* in: pointer to rw-lock */ rw_lock_t* lock, /* in: pointer to rw-lock */
char* file_name, /* in: file name where lock requested */ const char* file_name,/* in: file name where lock requested */
ulint line) /* in: line where requested */ ulint line) /* in: line where requested */
{ {
ibool success = FALSE; ibool success = FALSE;
......
...@@ -36,7 +36,7 @@ in the reset state. Explicit freeing of the mutex with mutex_free is ...@@ -36,7 +36,7 @@ in the reset state. Explicit freeing of the mutex with mutex_free is
necessary only if the memory block containing it is freed. */ necessary only if the memory block containing it is freed. */
#define mutex_create(M) mutex_create_func((M), IB__FILE__, __LINE__) #define mutex_create(M) mutex_create_func((M), __FILE__, __LINE__)
/*===================*/ /*===================*/
/********************************************************************** /**********************************************************************
Creates, or rather, initializes a mutex object in a specified memory Creates, or rather, initializes a mutex object in a specified memory
...@@ -48,7 +48,7 @@ void ...@@ -48,7 +48,7 @@ void
mutex_create_func( mutex_create_func(
/*==============*/ /*==============*/
mutex_t* mutex, /* in: pointer to memory */ mutex_t* mutex, /* in: pointer to memory */
char* cfile_name, /* in: file name where created */ const char* cfile_name, /* in: file name where created */
ulint cline); /* in: file line where created */ ulint cline); /* in: file line where created */
/********************************************************************** /**********************************************************************
Calling this function is obligatory only if the memory buffer containing Calling this function is obligatory only if the memory buffer containing
...@@ -64,7 +64,7 @@ mutex_free( ...@@ -64,7 +64,7 @@ mutex_free(
NOTE! The following macro should be used in mutex locking, not the NOTE! The following macro should be used in mutex locking, not the
corresponding function. */ corresponding function. */
#define mutex_enter(M) mutex_enter_func((M), IB__FILE__, __LINE__) #define mutex_enter(M) mutex_enter_func((M), __FILE__, __LINE__)
/********************************************************************** /**********************************************************************
A noninlined function that reserves a mutex. In ha_innodb.cc we have disabled A noninlined function that reserves a mutex. In ha_innodb.cc we have disabled
inlining of InnoDB functions, and no inlined functions should be called from inlining of InnoDB functions, and no inlined functions should be called from
...@@ -80,7 +80,7 @@ corresponding function. */ ...@@ -80,7 +80,7 @@ corresponding function. */
/* NOTE! currently same as mutex_enter! */ /* NOTE! currently same as mutex_enter! */
#define mutex_enter_fast(M) mutex_enter_func((M), IB__FILE__, __LINE__) #define mutex_enter_fast(M) mutex_enter_func((M), __FILE__, __LINE__)
#define mutex_enter_fast_func mutex_enter_func; #define mutex_enter_fast_func mutex_enter_func;
/********************************************************************** /**********************************************************************
NOTE! Use the corresponding macro in the header file, not this function NOTE! Use the corresponding macro in the header file, not this function
...@@ -92,7 +92,7 @@ void ...@@ -92,7 +92,7 @@ void
mutex_enter_func( mutex_enter_func(
/*=============*/ /*=============*/
mutex_t* mutex, /* in: pointer to mutex */ mutex_t* mutex, /* in: pointer to mutex */
char* file_name, /* in: file name where locked */ const char* file_name, /* in: file name where locked */
ulint line); /* in: line where locked */ ulint line); /* in: line where locked */
/************************************************************************ /************************************************************************
Tries to lock the mutex for the current thread. If the lock is not acquired Tries to lock the mutex for the current thread. If the lock is not acquired
...@@ -103,9 +103,9 @@ mutex_enter_nowait( ...@@ -103,9 +103,9 @@ mutex_enter_nowait(
/*===============*/ /*===============*/
/* out: 0 if succeed, 1 if not */ /* out: 0 if succeed, 1 if not */
mutex_t* mutex, /* in: pointer to mutex */ mutex_t* mutex, /* in: pointer to mutex */
char* file_name, /* in: file name where mutex const char* file_name, /* in: file name where mutex
requested */ requested */
ulint line); /* in: line where requested */ ulint line); /* in: line where requested */
/********************************************************************** /**********************************************************************
Unlocks a mutex owned by the current thread. */ Unlocks a mutex owned by the current thread. */
UNIV_INLINE UNIV_INLINE
...@@ -470,7 +470,7 @@ struct mutex_struct { ...@@ -470,7 +470,7 @@ struct mutex_struct {
#endif /* UNIV_SYNC_DEBUG */ #endif /* UNIV_SYNC_DEBUG */
ulint level; /* Level in the global latching ulint level; /* Level in the global latching
order; default SYNC_LEVEL_NONE */ order; default SYNC_LEVEL_NONE */
char* cfile_name; /* File name where mutex created */ const char* cfile_name;/* File name where mutex created */
ulint cline; /* Line where created */ ulint cline; /* Line where created */
ulint magic_n; ulint magic_n;
}; };
......
...@@ -23,7 +23,7 @@ void ...@@ -23,7 +23,7 @@ void
mutex_spin_wait( mutex_spin_wait(
/*============*/ /*============*/
mutex_t* mutex, /* in: pointer to mutex */ mutex_t* mutex, /* in: pointer to mutex */
char* file_name,/* in: file name where mutex requested */ const char* file_name,/* in: file name where mutex requested */
ulint line); /* in: line where requested */ ulint line); /* in: line where requested */
#ifdef UNIV_SYNC_DEBUG #ifdef UNIV_SYNC_DEBUG
/********************************************************************** /**********************************************************************
...@@ -241,9 +241,9 @@ UNIV_INLINE ...@@ -241,9 +241,9 @@ UNIV_INLINE
void void
mutex_enter_func( mutex_enter_func(
/*=============*/ /*=============*/
mutex_t* mutex, /* in: pointer to mutex */ mutex_t* mutex, /* in: pointer to mutex */
char* file_name,/* in: file name where locked */ const char* file_name, /* in: file name where locked */
ulint line) /* in: line where locked */ ulint line) /* in: line where locked */
{ {
ut_ad(mutex_validate(mutex)); ut_ad(mutex_validate(mutex));
......
...@@ -242,11 +242,6 @@ contains the sum of the following flag and the locally stored len. */ ...@@ -242,11 +242,6 @@ contains the sum of the following flag and the locally stored len. */
#define UNIV_EXTERN_STORAGE_FIELD (UNIV_SQL_NULL - UNIV_PAGE_SIZE) #define UNIV_EXTERN_STORAGE_FIELD (UNIV_SQL_NULL - UNIV_PAGE_SIZE)
/* The following definition of __FILE__ removes compiler warnings
associated with const char* / char* mismatches with __FILE__ */
#define IB__FILE__ ((char*)__FILE__)
#include <stdio.h> #include <stdio.h>
#include "ut0dbg.h" #include "ut0dbg.h"
#include "ut0ut.h" #include "ut0ut.h"
......
...@@ -27,7 +27,7 @@ extern const char* ut_dbg_msg_stop; ...@@ -27,7 +27,7 @@ extern const char* ut_dbg_msg_stop;
if (!((ulint)(EXPR) + ut_dbg_zero)) {\ if (!((ulint)(EXPR) + ut_dbg_zero)) {\
ut_print_timestamp(stderr);\ ut_print_timestamp(stderr);\
fprintf(stderr, ut_dbg_msg_assert_fail,\ fprintf(stderr, ut_dbg_msg_assert_fail,\
os_thread_pf(os_thread_get_curr_id()), IB__FILE__,\ os_thread_pf(os_thread_get_curr_id()), __FILE__,\
(ulint)__LINE__);\ (ulint)__LINE__);\
fputs("InnoDB: Failing assertion: " #EXPR "\n", stderr);\ fputs("InnoDB: Failing assertion: " #EXPR "\n", stderr);\
fputs(ut_dbg_msg_trap, stderr);\ fputs(ut_dbg_msg_trap, stderr);\
...@@ -36,7 +36,7 @@ extern const char* ut_dbg_msg_stop; ...@@ -36,7 +36,7 @@ extern const char* ut_dbg_msg_stop;
}\ }\
if (ut_dbg_stop_threads) {\ if (ut_dbg_stop_threads) {\
fprintf(stderr, ut_dbg_msg_stop,\ fprintf(stderr, ut_dbg_msg_stop,\
os_thread_pf(os_thread_get_curr_id()), IB__FILE__, (ulint)__LINE__);\ os_thread_pf(os_thread_get_curr_id()), __FILE__, (ulint)__LINE__);\
os_thread_sleep(1000000000);\ os_thread_sleep(1000000000);\
}\ }\
} while (0) } while (0)
...@@ -44,7 +44,7 @@ extern const char* ut_dbg_msg_stop; ...@@ -44,7 +44,7 @@ extern const char* ut_dbg_msg_stop;
#define ut_error do {\ #define ut_error do {\
ut_print_timestamp(stderr);\ ut_print_timestamp(stderr);\
fprintf(stderr, ut_dbg_msg_assert_fail,\ fprintf(stderr, ut_dbg_msg_assert_fail,\
os_thread_pf(os_thread_get_curr_id()), IB__FILE__, (ulint)__LINE__);\ os_thread_pf(os_thread_get_curr_id()), __FILE__, (ulint)__LINE__);\
fprintf(stderr, ut_dbg_msg_trap);\ fprintf(stderr, ut_dbg_msg_trap);\
ut_dbg_stop_threads = TRUE;\ ut_dbg_stop_threads = TRUE;\
if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = NULL;\ if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = NULL;\
......
...@@ -3889,7 +3889,7 @@ lock_rec_print( ...@@ -3889,7 +3889,7 @@ lock_rec_print(
page = buf_page_get_gen(space, page_no, RW_NO_LATCH, page = buf_page_get_gen(space, page_no, RW_NO_LATCH,
NULL, BUF_GET_IF_IN_POOL, NULL, BUF_GET_IF_IN_POOL,
IB__FILE__, __LINE__, &mtr); __FILE__, __LINE__, &mtr);
if (page) { if (page) {
page = buf_page_get_nowait(space, page_no, RW_S_LATCH, &mtr); page = buf_page_get_nowait(space, page_no, RW_S_LATCH, &mtr);
......
...@@ -1080,7 +1080,7 @@ recv_recover_page( ...@@ -1080,7 +1080,7 @@ recv_recover_page(
success = buf_page_get_known_nowait(RW_X_LATCH, page, success = buf_page_get_known_nowait(RW_X_LATCH, page,
BUF_KEEP_OLD, BUF_KEEP_OLD,
IB__FILE__, __LINE__, __FILE__, __LINE__,
&mtr); &mtr);
ut_a(success); ut_a(success);
...@@ -1664,7 +1664,7 @@ recv_compare_spaces( ...@@ -1664,7 +1664,7 @@ recv_compare_spaces(
frame = buf_page_get_gen(space1, page_no, RW_S_LATCH, NULL, frame = buf_page_get_gen(space1, page_no, RW_S_LATCH, NULL,
BUF_GET_IF_IN_POOL, BUF_GET_IF_IN_POOL,
IB__FILE__, __LINE__, __FILE__, __LINE__,
&mtr); &mtr);
if (frame) { if (frame) {
#ifdef UNIV_SYNC_DEBUG #ifdef UNIV_SYNC_DEBUG
...@@ -1679,7 +1679,7 @@ recv_compare_spaces( ...@@ -1679,7 +1679,7 @@ recv_compare_spaces(
frame = buf_page_get_gen(space2, page_no, RW_S_LATCH, NULL, frame = buf_page_get_gen(space2, page_no, RW_S_LATCH, NULL,
BUF_GET_IF_IN_POOL, BUF_GET_IF_IN_POOL,
IB__FILE__, __LINE__, __FILE__, __LINE__,
&mtr); &mtr);
if (frame) { if (frame) {
#ifdef UNIV_SYNC_DEBUG #ifdef UNIV_SYNC_DEBUG
......
...@@ -92,11 +92,11 @@ with mem_free. */ ...@@ -92,11 +92,11 @@ with mem_free. */
void* void*
mem_alloc_func_noninline( mem_alloc_func_noninline(
/*=====================*/ /*=====================*/
/* out, own: free storage, NULL if did not /* out, own: free storage,
succeed */ NULL if did not succeed */
ulint n, /* in: desired number of bytes */ ulint n, /* in: desired number of bytes */
char* file_name, /* in: file name where created */ const char* file_name, /* in: file name where created */
ulint line /* in: line where created */ ulint line /* in: line where created */
) )
{ {
return(mem_alloc_func(n, file_name, line)); return(mem_alloc_func(n, file_name, line));
...@@ -108,18 +108,18 @@ Creates a memory heap block where data can be allocated. */ ...@@ -108,18 +108,18 @@ Creates a memory heap block where data can be allocated. */
mem_block_t* mem_block_t*
mem_heap_create_block( mem_heap_create_block(
/*==================*/ /*==================*/
/* out, own: memory heap block, NULL if did not /* out, own: memory heap block,
succeed */ NULL if did not succeed */
mem_heap_t* heap,/* in: memory heap or NULL if first block should mem_heap_t* heap, /* in: memory heap or NULL if first block
be created */ should be created */
ulint n, /* in: number of bytes needed for user data, or ulint n, /* in: number of bytes needed for user data, or
if init_block is not NULL, its size in bytes */ if init_block is not NULL, its size in bytes */
void* init_block, /* in: init block in fast create, type must be void* init_block, /* in: init block in fast create,
MEM_HEAP_DYNAMIC */ type must be MEM_HEAP_DYNAMIC */
ulint type, /* in: type of heap: MEM_HEAP_DYNAMIC, or ulint type, /* in: type of heap: MEM_HEAP_DYNAMIC or
MEM_HEAP_BUFFER possibly ORed to MEM_HEAP_BTR_SEARCH */ MEM_HEAP_BUFFER */
char* file_name,/* in: file name where created */ const char* file_name,/* in: file name where created */
ulint line) /* in: line where created */ ulint line) /* in: line where created */
{ {
mem_block_t* block; mem_block_t* block;
ulint len; ulint len;
......
...@@ -1713,7 +1713,8 @@ Called by yyparse on error. */ ...@@ -1713,7 +1713,8 @@ Called by yyparse on error. */
void void
yyerror( yyerror(
/*====*/ /*====*/
char* s __attribute__((unused))) /* in: error message string */ const char* s __attribute__((unused)))
/* in: error message string */
{ {
ut_ad(s); ut_ad(s);
......
...@@ -53,7 +53,7 @@ struct sync_cell_struct { ...@@ -53,7 +53,7 @@ struct sync_cell_struct {
rw_lock_t* old_wait_rw_lock;/* the latest wait rw-lock in cell */ rw_lock_t* old_wait_rw_lock;/* the latest wait rw-lock in cell */
ulint request_type; /* lock type requested on the ulint request_type; /* lock type requested on the
object */ object */
char* file; /* in debug version file where const char* file; /* in debug version file where
requested */ requested */
ulint line; /* in debug version line where ulint line; /* in debug version line where
requested */ requested */
...@@ -329,7 +329,7 @@ sync_array_reserve_cell( ...@@ -329,7 +329,7 @@ sync_array_reserve_cell(
sync_array_t* arr, /* in: wait array */ sync_array_t* arr, /* in: wait array */
void* object, /* in: pointer to the object to wait for */ void* object, /* in: pointer to the object to wait for */
ulint type, /* in: lock request type */ ulint type, /* in: lock request type */
char* file, /* in: file where requested */ const char* file, /* in: file where requested */
ulint line, /* in: line where requested */ ulint line, /* in: line where requested */
ulint* index) /* out: index of the reserved cell */ ulint* index) /* out: index of the reserved cell */
{ {
......
...@@ -89,7 +89,7 @@ void ...@@ -89,7 +89,7 @@ void
rw_lock_create_func( rw_lock_create_func(
/*================*/ /*================*/
rw_lock_t* lock, /* in: pointer to memory */ rw_lock_t* lock, /* in: pointer to memory */
char* cfile_name, /* in: file name where created */ const char* cfile_name, /* in: file name where created */
ulint cline) /* in: file line where created */ ulint cline) /* in: file line where created */
{ {
/* If this is the very first time a synchronization /* If this is the very first time a synchronization
...@@ -213,7 +213,7 @@ rw_lock_s_lock_spin( ...@@ -213,7 +213,7 @@ rw_lock_s_lock_spin(
rw_lock_t* lock, /* in: pointer to rw-lock */ rw_lock_t* lock, /* in: pointer to rw-lock */
ulint pass, /* in: pass value; != 0, if the lock ulint pass, /* in: pass value; != 0, if the lock
will be passed to another thread to unlock */ will be passed to another thread to unlock */
char* file_name, /* in: file name where lock requested */ const char* file_name, /* in: file name where lock requested */
ulint line) /* in: line where requested */ ulint line) /* in: line where requested */
{ {
ulint index; /* index of the reserved wait cell */ ulint index; /* index of the reserved wait cell */
...@@ -324,7 +324,7 @@ rw_lock_x_lock_low( ...@@ -324,7 +324,7 @@ rw_lock_x_lock_low(
rw_lock_t* lock, /* in: pointer to rw-lock */ rw_lock_t* lock, /* in: pointer to rw-lock */
ulint pass, /* in: pass value; != 0, if the lock will ulint pass, /* in: pass value; != 0, if the lock will
be passed to another thread to unlock */ be passed to another thread to unlock */
char* file_name,/* in: file name where lock requested */ const char* file_name,/* in: file name where lock requested */
ulint line) /* in: line where requested */ ulint line) /* in: line where requested */
{ {
#ifdef UNIV_SYNC_DEBUG #ifdef UNIV_SYNC_DEBUG
...@@ -429,7 +429,7 @@ rw_lock_x_lock_func( ...@@ -429,7 +429,7 @@ rw_lock_x_lock_func(
rw_lock_t* lock, /* in: pointer to rw-lock */ rw_lock_t* lock, /* in: pointer to rw-lock */
ulint pass, /* in: pass value; != 0, if the lock will ulint pass, /* in: pass value; != 0, if the lock will
be passed to another thread to unlock */ be passed to another thread to unlock */
char* file_name,/* in: file name where lock requested */ const char* file_name,/* in: file name where lock requested */
ulint line) /* in: line where requested */ ulint line) /* in: line where requested */
{ {
ulint index; /* index of the reserved wait cell */ ulint index; /* index of the reserved wait cell */
...@@ -551,7 +551,7 @@ rw_lock_debug_mutex_enter(void) ...@@ -551,7 +551,7 @@ rw_lock_debug_mutex_enter(void)
{ {
loop: loop:
if (0 == mutex_enter_nowait(&rw_lock_debug_mutex, if (0 == mutex_enter_nowait(&rw_lock_debug_mutex,
IB__FILE__, __LINE__)) { __FILE__, __LINE__)) {
return; return;
} }
...@@ -560,7 +560,7 @@ loop: ...@@ -560,7 +560,7 @@ loop:
rw_lock_debug_waiters = TRUE; rw_lock_debug_waiters = TRUE;
if (0 == mutex_enter_nowait(&rw_lock_debug_mutex, if (0 == mutex_enter_nowait(&rw_lock_debug_mutex,
IB__FILE__, __LINE__)) { __FILE__, __LINE__)) {
return; return;
} }
......
...@@ -201,7 +201,7 @@ void ...@@ -201,7 +201,7 @@ void
mutex_create_func( mutex_create_func(
/*==============*/ /*==============*/
mutex_t* mutex, /* in: pointer to memory */ mutex_t* mutex, /* in: pointer to memory */
char* cfile_name, /* in: file name where created */ const char* cfile_name, /* in: file name where created */
ulint cline) /* in: file line where created */ ulint cline) /* in: file line where created */
{ {
#if defined(_WIN32) && defined(UNIV_CAN_USE_X86_ASSEMBLER) #if defined(_WIN32) && defined(UNIV_CAN_USE_X86_ASSEMBLER)
...@@ -294,10 +294,10 @@ mutex_enter_nowait( ...@@ -294,10 +294,10 @@ mutex_enter_nowait(
/*===============*/ /*===============*/
/* out: 0 if succeed, 1 if not */ /* out: 0 if succeed, 1 if not */
mutex_t* mutex, /* in: pointer to mutex */ mutex_t* mutex, /* in: pointer to mutex */
char* file_name __attribute__((unused)), const char* file_name __attribute__((unused)),
/* in: file name where mutex /* in: file name where mutex
requested */ requested */
ulint line __attribute__((unused))) ulint line __attribute__((unused)))
/* in: line where requested */ /* in: line where requested */
{ {
ut_ad(mutex_validate(mutex)); ut_ad(mutex_validate(mutex));
...@@ -357,9 +357,10 @@ for the mutex before suspending the thread. */ ...@@ -357,9 +357,10 @@ for the mutex before suspending the thread. */
void void
mutex_spin_wait( mutex_spin_wait(
/*============*/ /*============*/
mutex_t* mutex, /* in: pointer to mutex */ mutex_t* mutex, /* in: pointer to mutex */
char* file_name, /* in: file name where mutex requested */ const char* file_name, /* in: file name where
ulint line) /* in: line where requested */ mutex requested */
ulint line) /* in: line where requested */
{ {
ulint index; /* index of the reserved wait cell */ ulint index; /* index of the reserved wait cell */
ulint i; /* spin round count */ ulint i; /* spin round count */
......
...@@ -1067,7 +1067,7 @@ trx_undo_report_row_operation( ...@@ -1067,7 +1067,7 @@ trx_undo_report_row_operation(
undo_page = buf_page_get_gen(undo->space, page_no, undo_page = buf_page_get_gen(undo->space, page_no,
RW_X_LATCH, undo->guess_page, RW_X_LATCH, undo->guess_page,
BUF_GET, BUF_GET,
IB__FILE__, __LINE__, __FILE__, __LINE__,
&mtr); &mtr);
#ifdef UNIV_SYNC_DEBUG #ifdef UNIV_SYNC_DEBUG
......
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