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 + -
显示快捷键?