/* * Copyright (c) 2010 The VP8 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_INTRNL_H__ #define __VPX_MEM_INTRNL_H__ #include "vpx_ports/config.h" #ifndef CONFIG_MEM_MANAGER # if defined(VXWORKS) # define CONFIG_MEM_MANAGER 1 //include heap manager functionality, //default: enabled on vxworks # else # define CONFIG_MEM_MANAGER 0 //include heap manager functionality # endif #endif /*CONFIG_MEM_MANAGER*/ #ifndef CONFIG_MEM_TRACKER # define CONFIG_MEM_TRACKER 1 //include xvpx_* calls in the lib #endif #ifndef CONFIG_MEM_CHECKS # define CONFIG_MEM_CHECKS 0 //include some basic safety checks in //vpx_memcpy, _memset, and _memmove #endif #ifndef USE_GLOBAL_FUNCTION_POINTERS # define USE_GLOBAL_FUNCTION_POINTERS 0 //use function pointers instead of compiled functions. #endif #if CONFIG_MEM_TRACKER # include "vpx_mem_tracker.h" # if VPX_MEM_TRACKER_VERSION_CHIEF != 2 || VPX_MEM_TRACKER_VERSION_MAJOR != 5 # error "vpx_mem requires memory tracker version 2.5 to track memory usage" # endif #endif #define ADDRESS_STORAGE_SIZE sizeof(size_t) #ifndef DEFAULT_ALIGNMENT # if defined(VXWORKS) # define DEFAULT_ALIGNMENT 32 //default addr alignment to use in //calls to vpx_* functions other //than vpx_memalign # else # define DEFAULT_ALIGNMENT 1 # endif #endif #if DEFAULT_ALIGNMENT < 1 # error "DEFAULT_ALIGNMENT must be >= 1!" #endif #if CONFIG_MEM_TRACKER # define TRY_BOUNDS_CHECK 1 //when set to 1 pads each allocation, //integrity can be checked using //vpx_memory_tracker_check_integrity //or on free by defining //TRY_BOUNDS_CHECK_ON_FREE #else # define TRY_BOUNDS_CHECK 0 #endif /*CONFIG_MEM_TRACKER*/ #if TRY_BOUNDS_CHECK # define TRY_BOUNDS_CHECK_ON_FREE 0 //checks mem integrity on every //free, very expensive # define BOUNDS_CHECK_VALUE 0xdeadbeef //value stored before/after ea. //mem addr for bounds checking # define BOUNDS_CHECK_PAD_SIZE 32 //size of the padding before and //after ea allocation to be filled //with BOUNDS_CHECK_VALUE. //this should be a multiple of 4 #else # define BOUNDS_CHECK_VALUE 0 # define BOUNDS_CHECK_PAD_SIZE 0 #endif /*TRY_BOUNDS_CHECK*/ #ifndef REMOVE_PRINTFS # define REMOVE_PRINTFS 0 #endif /* Should probably use a vpx_mem logger function. */ #if REMOVE_PRINTFS # define _P(x) #else # define _P(x) x #endif /*returns an addr aligned to the byte boundary specified by align*/ #define align_addr(addr,align) (void*)(((size_t)(addr) + ((align) - 1)) & (size_t)-(align)) #endif /*__VPX_MEM_INTRNL_H__*/