InnoDB Plugin  1.0
Macros | Functions | Variables
ut0mem.h File Reference
#include "univ.i"
#include <string.h>
#include "os0sync.h"
#include "ut0mem.ic"
Include dependency graph for ut0mem.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define ut_malloc(n)   ut_malloc_low(n, TRUE)

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 assert_on_error))
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_INTERN ulint ut_strcount (const char *s1, const char *s2)
UNIV_INTERN char * ut_strreplace (const char *str, const char *s1, const char *s2)
char * ut_str3cat (const char *s1, const char *s2, const char *s3)
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

Detailed Description

Memory primitives

Created 5/30/1994 Heikki Tuuri

Macro Definition Documentation

#define ut_malloc (   n)    ut_malloc_low(n, TRUE)

Allocates memory.

Function Documentation

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

UNIV_INTERN void ut_free_all_mem ( void  )

Frees in shutdown all allocated memory not freed yet.

UNIV_INTERN void* ut_malloc_low ( ulint  n,
ibool  assert_on_error 
)

Allocates memory.

Returns
own: allocated memory
Parameters
nin: number of bytes to allocate
assert_on_errorin: if TRUE, we crash mysqld if the memory cannot be allocated
UNIV_INTERN void ut_mem_init ( void  )

Initializes the mem block list at database startup.

UNIV_INLINE int ut_memcmp ( const void *  str1,
const void *  str2,
ulint  n 
)

Wrapper for memcmp(3). Compare memory areas.

Parameters
str1in: first memory block to compare
str2in: second memory block to compare
nin: number of bytes to compare
Returns
negative, 0, or positive if str1 is smaller, equal, or greater than str2, respectively.
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.

Parameters
destin: copy to
sourin: copy from
nin: number of bytes to copy
Returns
dest
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.

Parameters
destin: copy to
sourin: copy from
nin: number of bytes to copy
Returns
dest
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).

Returns
number of chars written in: "hex" size in bytes

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).

Returns
number of chars written
Parameters
rawin: raw data
raw_sizein: "raw" length in bytes
hexout: hex string
hex_sizein: "hex" size in bytes
UNIV_INTERN void* ut_realloc ( void *  ptr,
ulint  size 
)

Implements realloc. This is needed by /pars/lexyy.cc. 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.

Returns
own: pointer to new mem block or NULL in: desired size
Parameters
ptrin: pointer to old block or NULL
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.

Returns
number of bytes that were written in: output buffer size in bytes

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.

Returns
number of bytes that were written
Parameters
strin: string
str_lenin: string length in bytes
bufout: output buffer
buf_sizein: output buffer size in bytes
UNIV_INLINE int ut_strcmp ( const char *  str1,
const char *  str2 
)

Wrapper for strcmp(3). Compare NUL-terminated strings.

Parameters
str1in: first string to compare
str2in: second string to compare
Returns
negative, 0, or positive if str1 is smaller, equal, or greater than str2, respectively.
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.

Returns
the number of times s2 occurs in s1 in: string to search for
Parameters
s1in: string to search in
UNIV_INLINE char* ut_strcpy ( char *  dest,
const char *  sour 
)

Wrapper for strcpy(3). Copy a NUL-terminated string.

Parameters
destin: copy to
sourin: copy from
Returns
dest
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.

Returns
strlen(src) in: size of destination buffer
Parameters
dstin: destination buffer
srcin: source buffer
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.

Returns
strlen(src) in: size of destination buffer
Parameters
dstin: destination buffer
srcin: source buffer
UNIV_INLINE ulint ut_strlen ( const char *  str)

Wrapper for strlen(3). Determine the length of a NUL-terminated string.

Parameters
strin: string
Returns
length of the string in bytes, excluding the terminating NUL
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.

Returns
own: modified string, must be freed with mem_free() in: string to replace s1 with
Parameters
strin: string to operate on
s1in: string to replace

Variable Documentation

os_fast_mutex_t ut_list_mutex

Mutex protecting ut_total_allocated_memory and ut_mem_block_list

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.