Go to the source code of this file.
Functions | |
UNIV_INLINE void * | ut_memcpy (void *dest, const void *sour, ulint n) |
UNIV_INLINE void * | ut_memmove (void *dest, const void *sour, ulint n) |
UNIV_INLINE int | ut_memcmp (const void *str1, const void *str2, ulint n) |
UNIV_INTERN void | ut_mem_init (void) |
UNIV_INTERN void * | ut_malloc_low (ulint n, ibool set_to_zero, ibool assert_on_error) |
UNIV_INTERN void * | ut_malloc (ulint n) |
UNIV_INTERN ibool | ut_test_malloc (ulint n) |
UNIV_INTERN void | ut_free (void *ptr) |
UNIV_INTERN void * | ut_realloc (void *ptr, ulint size) |
UNIV_INTERN void | ut_free_all_mem (void) |
UNIV_INLINE char * | ut_strcpy (char *dest, const char *sour) |
UNIV_INLINE ulint | ut_strlen (const char *str) |
UNIV_INLINE int | ut_strcmp (const char *str1, const char *str2) |
UNIV_INTERN ulint | ut_strlcpy (char *dst, const char *src, ulint size) |
UNIV_INTERN ulint | ut_strlcpy_rev (char *dst, const char *src, ulint size) |
UNIV_INLINE ulint | ut_strlenq (const char *str, char q) |
UNIV_INTERN char * | ut_strcpyq (char *dest, char q, const char *src) |
UNIV_INTERN char * | ut_memcpyq (char *dest, char q, const char *src, ulint len) |
UNIV_INTERN ulint | ut_strcount (const char *s1, const char *s2) |
UNIV_INTERN char * | ut_strreplace (const char *str, const char *s1, const char *s2) |
UNIV_INLINE ulint | ut_raw_to_hex (const void *raw, ulint raw_size, char *hex, ulint hex_size) |
UNIV_INLINE ulint | ut_str_sql_format (const char *str, ulint str_len, char *buf, ulint buf_size) |
Variables | |
ulint | ut_total_allocated_memory |
os_fast_mutex_t | ut_list_mutex |
UNIV_INTERN void ut_free | ( | void * | ptr | ) |
Frees a memory block allocated with ut_malloc. Freeing a NULL pointer is a nop. in, own: memory block, can be NULL
Frees a memory block allocated with ut_malloc. Freeing a NULL pointer is a nop.
ptr | in, own: memory block, can be NULL |
Definition at line 294 of file ut0mem.cc.
References ut_mem_block_struct::magic_n, os_fast_mutex_lock(), os_fast_mutex_unlock(), ut_mem_block_struct::size, ut_a, ut_free(), ut_list_mutex, UT_LIST_REMOVE, and ut_total_allocated_memory.
Referenced by buf_LRU_file_dump(), buf_LRU_file_restore(), dict_mem_table_free(), fil_create_new_single_table_tablespace(), fil_open_single_table_tablespace(), fil_read_flushed_lsn_and_arch_log_no(), fil_reset_too_high_lsns(), hash_table_free(), mem_area_free(), mem_pool_free(), os_aio_simulated_handle(), os_event_free(), os_file_opendir(), os_file_readdir_next_file(), os_file_set_size(), os_mem_free_large(), os_mutex_free(), rbt_delete(), rbt_free(), recv_sys_close(), recv_sys_mem_free(), sync_array_free(), trx_sys_close(), trx_sys_doublewrite_init_or_restore_pages(), ut_free(), and ut_realloc().
UNIV_INTERN void ut_free_all_mem | ( | void | ) |
Frees in shutdown all allocated memory not freed yet.
Definition at line 411 of file ut0mem.cc.
References ut_mem_block_struct::magic_n, os_fast_mutex_free(), ut_mem_block_struct::size, ut_a, ut_free_all_mem(), UT_LIST_GET_FIRST, ut_list_mutex, UT_LIST_REMOVE, and ut_total_allocated_memory.
Referenced by innobase_shutdown_for_mysql(), and ut_free_all_mem().
UNIV_INTERN void* ut_malloc | ( | ulint | n | ) |
Allocates memory. Sets it also to zero if UNIV_SET_MEM_TO_ZERO is defined.
Allocates memory. Sets it also to zero if UNIV_SET_MEM_TO_ZERO is defined.
n | in: number of bytes to allocate |
Definition at line 235 of file ut0mem.cc.
References ut_malloc(), and ut_malloc_low().
Referenced by buf_LRU_file_dump(), buf_LRU_file_restore(), dict_mem_table_create(), fil_create_new_single_table_tablespace(), fil_open_single_table_tablespace(), fil_read_flushed_lsn_and_arch_log_no(), fil_reset_too_high_lsns(), hash_create(), mem_area_alloc(), mem_pool_create(), os_aio_simulated_handle(), os_event_create(), os_file_opendir(), os_file_readdir_next_file(), os_file_set_size(), os_mutex_create(), rbt_add_node(), rbt_create(), rbt_insert(), recv_sys_init(), sync_array_create(), sync_init(), trx_sys_doublewrite_init_or_restore_pages(), ut_malloc(), and ut_realloc().
UNIV_INTERN void* ut_malloc_low | ( | ulint | n, |
ibool | set_to_zero, | ||
ibool | assert_on_error | ||
) |
Allocates memory. Sets it also to zero if UNIV_SET_MEM_TO_ZERO is defined and set_to_zero is TRUE.
Allocates memory. Sets it also to zero if UNIV_SET_MEM_TO_ZERO is defined and set_to_zero is TRUE.
n | in: number of bytes to allocate |
set_to_zero | in: TRUE if allocated memory should be set to zero if UNIV_SET_MEM_TO_ZERO is defined |
assert_on_error | in: if TRUE, we crash mysqld if the memory cannot be allocated |
Definition at line 93 of file ut0mem.cc.
References os_fast_mutex_lock(), os_fast_mutex_unlock(), os_thread_sleep(), ut_a, ut_ad, UT_LIST_ADD_FIRST, ut_list_mutex, ut_malloc_low(), ut_print_timestamp(), and ut_total_allocated_memory.
Referenced by mem_pool_create(), os_mem_alloc_large(), ut_malloc(), and ut_malloc_low().
UNIV_INTERN void ut_mem_init | ( | void | ) |
Initializes the mem block list at database startup.
Definition at line 77 of file ut0mem.cc.
References os_fast_mutex_init(), ut_a, UT_LIST_INIT, and ut_list_mutex.
Referenced by srv_general_init().
UNIV_INLINE int ut_memcmp | ( | const void * | str1, |
const void * | str2, | ||
ulint | n | ||
) |
Wrapper for memcmp(3). Compare memory areas.
str1 | in: first memory block to compare |
str2 | in: second memory block to compare |
n | in: number of bytes to compare |
Referenced by dict_get_first_table_name_in_db(), dict_load_foreigns(), dict_load_table(), and recv_recovery_from_checkpoint_start_func().
UNIV_INLINE void* ut_memcpy | ( | void * | dest, |
const void * | sour, | ||
ulint | n | ||
) |
Wrapper for memcpy(3). Copy memory area when the source and target are not overlapping.
dest | in: copy to |
sour | in: copy from |
n | in: number of bytes to copy |
Referenced by btr_pcur_copy_stored_position(), dict_table_rename_in_cache(), log_write_low(), log_write_up_to(), os_aio_simulated_handle(), page_cur_parse_insert_rec(), pars_get_lex_chars(), recv_recovery_from_checkpoint_start_func(), sym_tab_add_str_lit(), trx_undo_parse_add_undo_rec(), and ut_realloc().
UNIV_INTERN char* ut_memcpyq | ( | char * | dest, |
char | q, | ||
const char * | src, | ||
ulint | len | ||
) |
Make a quoted copy of a fixed-length string. Leading and trailing quotes will not be included; only embedded quotes will be escaped. See also ut_strlenq() and ut_strcpyq().
Make a quoted copy of a fixed-length string. Leading and trailing quotes will not be included; only embedded quotes will be escaped. See also ut_strlenq() and ut_strcpyq().
dest | in: output buffer |
q | in: the quote character |
src | in: string to be quoted |
len | in: length of src |
Definition at line 519 of file ut0mem.cc.
References ut_memcpyq().
Referenced by ut_memcpyq().
UNIV_INLINE void* ut_memmove | ( | void * | dest, |
const void * | sour, | ||
ulint | n | ||
) |
Wrapper for memmove(3). Copy memory area when the source and target are overlapping.
dest | in: copy to |
sour | in: copy from |
n | in: number of bytes to copy |
UNIV_INLINE ulint ut_raw_to_hex | ( | const void * | raw, |
ulint | raw_size, | ||
char * | hex, | ||
ulint | hex_size | ||
) |
Converts a raw binary data to a NUL-terminated hex string. The output is truncated if there is not enough space in "hex", make sure "hex_size" is at least (2 * raw_size + 1) if you do not want this to happen. Returns the actual number of characters written to "hex" (including the NUL).
raw | in: raw data |
raw_size | in: "raw" length in bytes |
hex | out: hex string |
Referenced by row_raw_format().
UNIV_INTERN void* ut_realloc | ( | void * | ptr, |
ulint | size | ||
) |
Implements realloc. This is needed by /pars/lexyy.c. Otherwise, you should not use this function because the allocation functions in mem0mem.h are the recommended ones in InnoDB.
man realloc in Linux, 2004:
realloc() changes the size of the memory block pointed to by ptr to size bytes. The contents will be unchanged to the minimum of the old and new sizes; newly allocated mem ory will be uninitialized. If ptr is NULL, the call is equivalent to malloc(size); if size is equal to zero, the call is equivalent to free(ptr). Unless ptr is NULL, it must have been returned by an earlier call to malloc(), calloc() or realloc().
RETURN VALUE realloc() returns a pointer to the newly allocated memory, which is suitably aligned for any kind of variable and may be different from ptr, or NULL if the request fails. If size was equal to 0, either NULL or a pointer suitable to be passed to free() is returned. If realloc() fails the original block is left untouched - it is not freed or moved.
Implements realloc. This is needed by /pars/lexyy.c. Otherwise, you should not use this function because the allocation functions in mem0mem.h are the recommended ones in InnoDB.
man realloc in Linux, 2004:
realloc() changes the size of the memory block pointed to by ptr to size bytes. The contents will be unchanged to the minimum of the old and new sizes; newly allocated mem- ory will be uninitialized. If ptr is NULL, the call is equivalent to malloc(size); if size is equal to zero, the call is equivalent to free(ptr). Unless ptr is NULL, it must have been returned by an earlier call to malloc(), calloc() or realloc().
RETURN VALUE realloc() returns a pointer to the newly allocated memory, which is suitably aligned for any kind of variable and may be different from ptr, or NULL if the request fails. If size was equal to 0, either NULL or a pointer suitable to be passed to free() is returned. If realloc() fails the original block is left untouched - it is not freed or moved.
ptr | in: pointer to old block or NULL |
size | in: desired size |
Definition at line 355 of file ut0mem.cc.
References ut_mem_block_struct::magic_n, ut_mem_block_struct::size, ut_a, ut_free(), ut_malloc(), ut_memcpy(), and ut_realloc().
Referenced by dict_table_rename_in_cache(), and ut_realloc().
UNIV_INLINE ulint ut_str_sql_format | ( | const char * | str, |
ulint | str_len, | ||
char * | buf, | ||
ulint | buf_size | ||
) |
Adds single quotes to the start and end of string and escapes any quotes by doubling them. Returns the number of bytes that were written to "buf" (including the terminating NUL). If buf_size is too small then the trailing bytes from "str" are discarded.
str | in: string |
str_len | in: string length in bytes |
buf | out: output buffer |
Referenced by innobase_raw_format().
UNIV_INLINE int ut_strcmp | ( | const char * | str1, |
const char * | str2 | ||
) |
Wrapper for strcmp(3). Compare NUL-terminated strings.
str1 | in: first string to compare |
str2 | in: second string to compare |
Referenced by dict_table_add_to_cache(), dict_table_get_index_by_max_id(), dict_table_get_index_on_name(), dict_table_get_index_on_name_and_min_id(), dict_table_rename_in_cache(), ha_innobase::innobase_get_index(), innobase_start_or_create_for_mysql(), row_create_index_for_mysql(), trx_release_savepoint_for_mysql(), trx_rollback_to_savepoint_for_mysql(), and trx_savepoint_for_mysql().
UNIV_INTERN ulint ut_strcount | ( | const char * | s1, |
const char * | s2 | ||
) |
Return the number of times s2 occurs in s1. Overlapping instances of s2 are only counted once.
Return the number of times s2 occurs in s1. Overlapping instances of s2 are only counted once.
s1 | in: string to search in |
s2 | in: string to search for |
Definition at line 544 of file ut0mem.cc.
References ut_strcount().
Referenced by ut_strcount(), and ut_strreplace().
UNIV_INLINE char* ut_strcpy | ( | char * | dest, |
const char * | sour | ||
) |
Wrapper for strcpy(3). Copy a NUL-terminated string.
dest | in: copy to |
sour | in: copy from |
UNIV_INTERN char* ut_strcpyq | ( | char * | dest, |
char | q, | ||
const char * | src | ||
) |
Make a quoted copy of a NUL-terminated string. Leading and trailing quotes will not be included; only embedded quotes will be escaped. See also ut_strlenq() and ut_memcpyq().
Make a quoted copy of a NUL-terminated string. Leading and trailing quotes will not be included; only embedded quotes will be escaped. See also ut_strlenq() and ut_memcpyq().
dest | in: output buffer |
q | in: the quote character |
src | in: null-terminated string |
Definition at line 497 of file ut0mem.cc.
References ut_strcpyq().
Referenced by ut_strcpyq().
UNIV_INTERN ulint ut_strlcpy | ( | char * | dst, |
const char * | src, | ||
ulint | size | ||
) |
Copies up to size - 1 characters from the NUL-terminated string src to dst, NUL-terminating the result. Returns strlen(src), so truncation occurred if the return value >= size.
Copies up to size - 1 characters from the NUL-terminated string src to dst, NUL-terminating the result. Returns strlen(src), so truncation occurred if the return value >= size.
dst | in: destination buffer |
src | in: source buffer |
size | in: size of destination buffer |
Definition at line 449 of file ut0mem.cc.
References ut_min(), and ut_strlcpy().
Referenced by trx_set_detailed_error(), and ut_strlcpy().
UNIV_INTERN ulint ut_strlcpy_rev | ( | char * | dst, |
const char * | src, | ||
ulint | size | ||
) |
Like ut_strlcpy, but if src doesn't fit in dst completely, copies the last (size - 1) bytes of src, not the first.
Like ut_strlcpy, but if src doesn't fit in dst completely, copies the last (size - 1) bytes of src, not the first.
dst | in: destination buffer |
src | in: source buffer |
size | in: size of destination buffer |
Definition at line 473 of file ut0mem.cc.
References ut_min(), and ut_strlcpy_rev().
Referenced by ut_strlcpy_rev().
UNIV_INLINE ulint ut_strlen | ( | const char * | str | ) |
Wrapper for strlen(3). Determine the length of a NUL-terminated string.
str | in: string |
Referenced by dict_get_first_table_name_in_db(), dict_load_foreigns(), dict_load_table(), and dict_table_rename_in_cache().
UNIV_INLINE ulint ut_strlenq | ( | const char * | str, |
char | q | ||
) |
Compute strlen(ut_strcpyq(str, q)).
str | in: null-terminated string |
UNIV_INTERN char* ut_strreplace | ( | const char * | str, |
const char * | s1, | ||
const char * | s2 | ||
) |
Replace every occurrence of s1 in str with s2. Overlapping instances of s1 are only replaced once.
Replace every occurrence of s1 in str with s2. Overlapping instances of s1 are only replaced once.
str | in: string to operate on |
s1 | in: string to replace |
s2 | in: string to replace s1 with |
Definition at line 578 of file ut0mem.cc.
References ut_strcount(), and ut_strreplace().
Referenced by ut_strreplace().
UNIV_INTERN ibool ut_test_malloc | ( | ulint | n | ) |
Tests if malloc of n bytes would succeed. ut_malloc() asserts if memory runs out. It cannot be used if we want to return an error message. Prints to stderr a message if fails.
Tests if malloc of n bytes would succeed. ut_malloc() asserts if memory runs out. It cannot be used if we want to return an error message. Prints to stderr a message if fails.
n | in: try to allocate this many bytes |
Definition at line 254 of file ut0mem.cc.
References ut_print_timestamp(), ut_test_malloc(), and ut_total_allocated_memory.
Referenced by ut_test_malloc().
os_fast_mutex_t ut_list_mutex |
Mutex protecting ut_total_allocated_memory and ut_mem_block_list
Definition at line 48 of file ut0mem.cc.
Referenced by os_mem_alloc_large(), os_mem_free_large(), ut_free(), ut_free_all_mem(), ut_malloc_low(), and ut_mem_init().
ulint ut_total_allocated_memory |
The total amount of memory currently allocated from the operating system with os_mem_alloc_large() or malloc(). Does not count malloc() if srv_use_sys_malloc is set. Protected by ut_list_mutex.
Definition at line 45 of file ut0mem.cc.
Referenced by os_mem_alloc_large(), os_mem_free_large(), srv_printf_innodb_monitor(), ut_free(), ut_free_all_mem(), ut_malloc_low(), and ut_test_malloc().