diff -r 000000000000 -r 6474c204b198 media/libvpx/vpx_mem/include/vpx_mem_tracker.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/media/libvpx/vpx_mem/include/vpx_mem_tracker.h Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,179 @@ +/* + * Copyright (c) 2010 The WebM project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. An additional intellectual property rights grant can be found + * in the file PATENTS. All contributing project authors may + * be found in the AUTHORS file in the root of the source tree. + */ + + +#ifndef __VPX_MEM_TRACKER_H__ +#define __VPX_MEM_TRACKER_H__ + +/* vpx_mem_tracker version info */ +#define vpx_mem_tracker_version "2.5.1.1" + +#define VPX_MEM_TRACKER_VERSION_CHIEF 2 +#define VPX_MEM_TRACKER_VERSION_MAJOR 5 +#define VPX_MEM_TRACKER_VERSION_MINOR 1 +#define VPX_MEM_TRACKER_VERSION_PATCH 1 +/* END - vpx_mem_tracker version info */ + +#include + +struct mem_block { + size_t addr; + unsigned int size, + line; + char *file; + struct mem_block *prev, + * next; + + int padded; // This mem_block has padding for integrity checks. + // As of right now, this should only be 0 if + // using vpx_mem_alloc to allocate cache memory. + // 2005-01-11 tjf +}; + +#if defined(__cplusplus) +extern "C" { +#endif + + /* + vpx_memory_tracker_init(int padding_size, int pad_value) + padding_size - the size of the padding before and after each mem addr. + Values > 0 indicate that integrity checks can be performed + by inspecting these areas. + pad_value - the initial value within the padding area before and after + each mem addr. + + Initializes the memory tracker interface. Should be called before any + other calls to the memory tracker. + */ + int vpx_memory_tracker_init(int padding_size, int pad_value); + + /* + vpx_memory_tracker_destroy() + Deinitializes the memory tracker interface + */ + void vpx_memory_tracker_destroy(); + + /* + vpx_memory_tracker_add(size_t addr, unsigned int size, + char * file, unsigned int line) + addr - memory address to be added to list + size - size of addr + file - the file addr was referenced from + line - the line in file addr was referenced from + Adds memory address addr, it's size, file and line it came from + to the memory tracker allocation table + */ + void vpx_memory_tracker_add(size_t addr, unsigned int size, + char *file, unsigned int line, + int padded); + + /* + vpx_memory_tracker_add(size_t addr, unsigned int size, char * file, unsigned int line) + addr - memory address to be added to be removed + padded - if 0, disables bounds checking on this memory block even if bounds + checking is enabled. (for example, when allocating cache memory, we still want + to check for memory leaks, but we do not waste cache space for bounds check padding) + Removes the specified address from the memory tracker's allocation + table + Return: + 0: on success + -1: if memory allocation table's mutex could not be locked + -2: if the addr was not found in the list + */ + int vpx_memory_tracker_remove(size_t addr); + + /* + vpx_memory_tracker_find(unsigned int addr) + addr - address to be found in the memory tracker's + allocation table + Return: + If found, pointer to the memory block that matches addr + NULL otherwise + */ + struct mem_block *vpx_memory_tracker_find(size_t addr); + + /* + vpx_memory_tracker_dump() + Dumps the current contents of the memory + tracker allocation table + */ + void vpx_memory_tracker_dump(); + + /* + vpx_memory_tracker_check_integrity() + If a padding_size was provided to vpx_memory_tracker_init() + This function will verify that the region before and after each + memory address contains the specified pad_value. Should the check + fail, the filename and line of the check will be printed out. + */ + void vpx_memory_tracker_check_integrity(char *file, unsigned int line); + + /* + vpx_memory_tracker_set_log_type + type - value representing the logging type to use + option - type specific option. This will be interpreted differently + based on the type. + Sets the logging type for the memory tracker. + Values currently supported: + 0: if option is NULL, log to stderr, otherwise interpret option as a + filename and attempt to open it. + 1: Use output_debug_string (WIN32 only), option ignored + Return: + 0: on success + -1: if the logging type could not be set, because the value was invalid + or because a file could not be opened + */ + int vpx_memory_tracker_set_log_type(int type, char *option); + + /* + vpx_memory_tracker_set_log_func + userdata - ptr to be passed to the supplied logfunc, can be NULL + logfunc - the logging function to be used to output data from + vpx_memory_track_dump/check_integrity + Sets a logging function to be used by the memory tracker. + Return: + 0: on success + -1: if the logging type could not be set because logfunc was NULL + */ + int vpx_memory_tracker_set_log_func(void *userdata, + void(*logfunc)(void *userdata, + const char *fmt, va_list args)); + + /* Wrappers to standard library functions. */ + typedef void *(* mem_track_malloc_func)(size_t); + typedef void *(* mem_track_calloc_func)(size_t, size_t); + typedef void *(* mem_track_realloc_func)(void *, size_t); + typedef void (* mem_track_free_func)(void *); + typedef void *(* mem_track_memcpy_func)(void *, const void *, size_t); + typedef void *(* mem_track_memset_func)(void *, int, size_t); + typedef void *(* mem_track_memmove_func)(void *, const void *, size_t); + + /* + vpx_memory_tracker_set_functions + + Sets the function pointers for the standard library functions. + + Return: + 0: on success + -1: if the use global function pointers is not set. + */ + int vpx_memory_tracker_set_functions(mem_track_malloc_func g_malloc_l +, mem_track_calloc_func g_calloc_l +, mem_track_realloc_func g_realloc_l +, mem_track_free_func g_free_l +, mem_track_memcpy_func g_memcpy_l +, mem_track_memset_func g_memset_l +, mem_track_memmove_func g_memmove_l); + +#if defined(__cplusplus) +} +#endif + +#endif // __VPX_MEM_TRACKER_H__