avmalloc.h
来自「AMLOGIC DPF source code」· C头文件 代码 · 共 223 行
H
223 行
/*******************************************************************
*
* Copyright C 2005 by Amlogic, Inc. All Rights Reserved.
*
* Description:
*
* Author: Amlogic Software
* Created: Fri Nov 11 00:58:05 2005
*
*******************************************************************/
#ifndef _AVMALLOC_H_
/** @defgroup OS_API_Memory Memory functions */
/** @ingroup OS_API */
/** @addtogroup OS_API_Memory */
/*@{*/
#define PHEAP_SIZE 0x4000
/**
* AVMemInit
* Initialize application heap, kernel heap and UI heap from physical
* memory manager, default memory map is used.
* @note This function will be called before OS starts.
*/
extern void AVMemInit(void);
/** @cond NODOC */
/*
* Re-initialize applet heap when it's clean so we can adjust the location and size for that heap.
*/
extern void AVMem_ReInit(int map_index);
/** @endcond */
/**
* Build a customer heap from an assigned block.
* @param[in] pHeap_handle The pointer to returned heap handle.
* @param[in] from The start address of the heap.
* @param[in] size The size of the heap in unit of byte.
* @return TRUE when success.
* @return FALSE when failed.
* @note This function along with AVMem_rtl_malloc/free/calloc/realloc() provide
* a group of API to allow user create an independant heap to manage.
*/
extern int AVMem_InitSimple2(char **pHeap_handle, void *from, unsigned size);
/**
* Destroy a heap built from AVMem_InitSimple2
* @param[in] pHeap_handle The pointer to heap handle.
*/
extern void AVMem_DeinitSimple2(char *pHeap_handle);
extern void Am_MemTypeGroup_Init(void);
#if (OS_TASK_DEBUGHELPER_EN&2)
extern void *AVMem_rtl_malloc_ex (size_t size, char *block_ptr, int line, char* file);
extern void *AVMem_rtl_malloc (size_t size, int line, char* file);
extern void *AVMem_rtl_realloc_ex (void *p, size_t new_len, char *block_ptr, int line, char* file);
extern void *AVMem_rtl_realloc (void *p, size_t new_len, int line, char* file);
extern void *AVMem_rtl_calloc_ex(size_t nelem, size_t elem_size, char *block_ptr, int line, char* file);
extern void *AVMem_rtl_calloc(size_t nelem, size_t elem_size, int line, char* file);
extern void AVMem_rtl_free_ex (void *ptr, char *block_ptr, int line, char* file);
extern void AVMem_rtl_free (void *ptr, int line, char* file);
#else
extern void *AVMem_rtl_malloc_ex (size_t size, char *block_ptr);
extern void *AVMem_rtl_malloc (size_t size);
extern void *AVMem_rtl_realloc_ex (void *p, size_t new_len, char *block_ptr);
extern void *AVMem_rtl_realloc (void *p, size_t new_len);
extern void *AVMem_rtl_calloc_ex(size_t nelem, size_t elem_size, char *block_ptr);
extern void *AVMem_rtl_calloc(size_t nelem, size_t elem_size);
extern void AVMem_rtl_free_ex (void *ptr, char *block_ptr);
extern void AVMem_rtl_free (void *ptr);
#endif
#if (OS_TASK_DEBUGHELPER_EN&2)
#define AVMem_malloc(size) AVMem_malloc_trace(size, __LINE__, __FILE__)
#define AVMem_pmalloc(size) AVMem_pmalloc_trace(size, __LINE__, __FILE__)
#define AVMem_kmalloc(size) AVMem_kmalloc_trace(size, __LINE__, __FILE__)
#define AVMem_umalloc(size) AVMem_umalloc_trace(size, __LINE__, __FILE__)
#define AVMem_free(ptr) AVMem_free_trace(ptr, __LINE__, __FILE__)
void *AVMem_malloc_trace(size_t size, INT16U line, char* file);
void *AVMem_pmalloc_trace(size_t size, INT16U line, char* file);
void *AVMem_kmalloc_trace(size_t size, INT16U line, char* file);
void *AVMem_umalloc_trace(size_t size, INT16U line, char* file);
void AVMem_free_trace(void *ptr, INT16U line, char* file);
#else
/**
* malloc from applet heap
* @param[in] size The size of the memory requested.
*/
void *AVMem_malloc(size_t size);
/**
* malloc from playlist heap
* @param[in] size The size of the memory requested.
*/
void *AVMem_pmalloc(size_t size);
/**
* malloc from kernel heap
* @param[in] size The size of the memory requested.
*/
void *AVMem_kmalloc(size_t size);
/**
* malloc from UI/User heap
* @param[in] size The size of the memory requested.
*/
void *AVMem_umalloc(size_t size);
/**
* free from applet/kernel/UI/User heap
* @param[in] ptr The pointer to be freed.
*/
void AVMem_free(void *ptr);
#endif
#if (OS_TASK_DEBUGHELPER_EN&2)
#define AVMem_calloc(nelem,elem_size) AVMem_calloc_trace(nelem,elem_size, __LINE__, __FILE__)
#define AVMem_pcalloc(nelem,elem_size) AVMem_pcalloc_trace(nelem,elem_size, __LINE__, __FILE__)
#define AVMem_kcalloc(nelem,elem_size) AVMem_kcalloc_trace(nelem,elem_size, __LINE__, __FILE__)
#define AVMem_ucalloc(nelem,elem_size) AVMem_ucalloc_trace(nelem,elem_size, __LINE__, __FILE__)
void *AVMem_calloc_trace(size_t nelem, size_t elem_size, INT16U line, char* file);
void *AVMem_pcalloc_trace(size_t nelem, size_t elem_size, INT16U line, char* file);
void *AVMem_kcalloc_trace(size_t nelem, size_t elem_size, INT16U line, char* file);
void *AVMem_ucalloc_trace(size_t nelem, size_t elem_size, INT16U line, char* file);
#else
/**
* calloc from from applet heap
*/
extern void *AVMem_calloc(size_t nelem, size_t elem_size);
/**
* calloc from from playlist heap
*/
extern void *AVMem_pcalloc(size_t nelem, size_t elem_size);
/**
* calloc from from kernel heap
*/
extern void *AVMem_kcalloc(size_t nelem, size_t elem_size);
/**
* calloc from from UI/User heap
*/
extern void *AVMem_ucalloc(size_t nelem, size_t elem_size);
#endif
#if (OS_TASK_DEBUGHELPER_EN&2)
#define AVMem_realloc(p,new_len) AVMem_realloc_trace(p,new_len, __LINE__, __FILE__)
#define AVMem_prealloc(p,new_len) AVMem_prealloc_trace(p,new_len, __LINE__, __FILE__)
#define AVMem_krealloc(p,new_len) AVMem_krealloc_trace(p,new_len, __LINE__, __FILE__)
#define AVMem_urealloc(p,new_len) AVMem_urealloc_trace(p,new_len, __LINE__, __FILE__)
void *AVMem_realloc_trace(void *p, size_t new_len, INT16U line, char* file);
void *AVMem_prealloc_trace(void *p, size_t new_len, INT16U line, char* file);
void *AVMem_krealloc_trace(void *p, size_t new_len, INT16U line, char* file);
void *AVMem_urealloc_trace(void *p, size_t new_len, INT16U line, char* file);
#else
/**
* realloc from from applet heap
*/
extern void *AVMem_realloc(void *p, size_t new_len);
/**
* realloc from playlist heap
*/
extern void *AVMem_prealloc(void *p, size_t new_len);
/**
* realloc from from kernel heap
*/
extern void *AVMem_krealloc(void *p, size_t new_len);
/**
* realloc from from UI/User heap
*/
extern void *AVMem_urealloc(void *p, size_t new_len);
#endif
/*@}*/
extern void AVMem_dump(int);
void find_in_malloc_history(unsigned addr, char **file, unsigned *line);
#endif /* _AVMALLOC_H_ */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?