📄 mem_api.h
字号:
/*
* @(#)Ram.h
* @date 2005/12/25
* @version 1.0
* @author Zhou Shangpin.
* Copyright 2005 Anyka corporation, Inc. All rights reserved.
* ANYKA PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
#ifndef _MEMORY_H_
#define _MEMORY_H_
#include "aktypes.h"
T_U8* Ram_Alloc(T_U32 size
#ifdef _MEMORY_DEBUG_
,T_U8* FileName, T_U32 line
#endif
);
T_U8* Ram_Realloc(T_pVOID ptr, T_U32 size
#ifdef _MEMORY_DEBUG_
,T_U8* FileName, T_U32 line
#endif
);
T_VOID Ram_Initial(T_U8* ptr, T_U32 size);
T_U32 Ram_GetMaxFree(T_VOID);
T_U32 Ram_GetPtrValue(T_VOID);
T_U32 Ram_GetPieceValue(T_VOID);
T_U32 Ram_GetSpaceValue(T_VOID);
T_U32 Ram_GetMaxBlock(T_VOID);
T_U32 Ram_GetPtrNum(T_VOID);
T_U32 Ram_Used(T_VOID);
T_U32 Ram_Remain(T_VOID);
T_U32 Ram_Total(T_VOID);
typedef enum
{
COMP_EQUAL,
COMP_GREAT,
COMP_LESS
}E_COMPARE;
#define MEM_BLOCK_LEN 32
#define MUL_BLOCK_LEN(num) ((num)<<5)
#define DIV_BLOCK_LEN(num) ((num)>>5)
struct MemDebug
{
T_U8* FileName;
T_U32 LineNum;
};
typedef struct MemDebug T_MEMDEBUG;
typedef struct MemDebug* T_PMEMDEBUG;
struct MemBlockHead
{
T_U32 BlockNum;
T_U32 PrevBlock;
#ifdef _MEMORY_DEBUG_
T_MEMDEBUG debug;
#endif
};
typedef struct MemBlockHead T_MEMBLOCK;
typedef struct MemBlockHead* T_PMEMBLOCK;
#define HEAD_BLOCK_LEN ((sizeof(T_MEMBLOCK) + MEM_BLOCK_LEN - 1) / MEM_BLOCK_LEN)
#define BLOCK_TO_PTR(block) ((T_U8*)(gRam.start + MUL_BLOCK_LEN(block)))
#define BLOCK_TO_HEAD(block) ((T_PMEMBLOCK)(gRam.start + MUL_BLOCK_LEN(block)))
#define HEAD_TO_BLOCK(pBlock) (DIV_BLOCK_LEN( ((T_U8*)pBlock) - gRam.start ))
#define PTR_TO_HEAD(ptr) ((T_PMEMBLOCK)(ptr))
#define PTR_TO_BLOCK(ptr) ((T_U32)(DIV_BLOCK_LEN((T_U8*)ptr - gRam.start)))
struct Memory
{
T_U8* start; //start of dump.
T_U32 TotalBlockNum; //dump length.
T_U32 UsedBlockNum; //have allocated memory space.
T_U32 MaxUsedBlock; //max of UsedBlockNum
T_U32 MallocPtrNum; //hanve allocated pointer number.
T_U32 MaxPtrNum; //max of MallocPtrNum
T_U32 MaxFreeLen; //Max free block in dump
T_U32 MinFreeValue; //min of MaxFreeLen
T_U32 LastMallocBlock; //last allocated block.
};
typedef struct Memory T_MEMORY;
typedef struct Memory* T_PMEMORY;
//block operate.
T_VOID Ram_Move(T_pVOID dest, T_pVOID source, T_U32 count);
T_VOID Ram_Set(T_VOID* dest, T_U8 chr, T_U32 count);
E_COMPARE Ram_Cmp(T_VOID* dest, T_VOID* source, T_U32 count);
T_U32 Ram_StrCmp(T_U8* dest, T_U8* source);
//dump operate.
T_VOID Ram_Initial(T_U8* ptr, T_U32 size);
T_U32 Ram_GetMaxFree(T_VOID);
T_U32 Ram_GetPtrValue(T_VOID);
T_U32 Ram_GetPieceValue(T_VOID);
T_U32 Ram_GetSpaceValue(T_VOID);
T_U32 Ram_GetMaxBlock(T_VOID);
T_U32 Ram_GetPtrNum(T_VOID);
T_U32 Ram_Used(T_VOID);
T_U32 Ram_Remain(T_VOID);
T_U32 Ram_Total(T_VOID);
//pointer operate.
T_U32 Ram_SizeOf(T_pVOID ptr);
T_pVOID Ram_Free(T_pVOID ptr);
//debug operate.
T_BOOL Ram_ChkLink(T_VOID);
T_BOOL Ram_ChkPtr(T_VOID * ptr);
extern T_MEMORY gRam;
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -