stm32_ota/ABM开发板(DTU透传APP源码)/YcOS版本/APPV4.0/SYSTEM/MALLOC/malloc.c

256 lines
9.1 KiB
C
Raw Normal View History

2024-12-17 20:03:43 +08:00
#include "malloc.h"
/********************************************************************************
* @file malloc.c
* @author <EFBFBD>̳ϿƼ<EFBFBD> Mr.Wang
* @version V1.0.0
* @date 11-Dec-2018
* @brief STM32<EFBFBD>ڲ<EFBFBD>RAM <EFBFBD><EFBFBD>̬<EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
******************************************************************************
*******************************************************************************/
/****************************************************************************
* <EFBFBD>ڲ<EFBFBD>ʹ<EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>س<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
****************************************************************************/
/*mem1<6D>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>趨.mem1<6D><31>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD> <20>ڲ<EFBFBD>SRAM <20><><EFBFBD><EFBFBD>*/
#define MEM1_BLOCK_SIZE 32 //<2F>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>СΪ32<33>ֽ<EFBFBD>
#define MEM1_MAX_SIZE (6*1024) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD> 20K
#define MEM1_ALLOC_TABLE_SIZE (MEM1_MAX_SIZE/MEM1_BLOCK_SIZE) //<2F>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>С
/*mem2<6D>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>趨.mem2<6D><32><EFBFBD>ڴ<EFBFBD><DAB4>ش<EFBFBD><D8B4><EFBFBD> <20>ⲿSRAM <20><><EFBFBD><EFBFBD>*/
#define MEM2_BLOCK_SIZE 32 //<2F>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>СΪ32<33>ֽ<EFBFBD>
#define MEM2_MAX_SIZE (32) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>960K û<><C3BB><EFBFBD>ⲿRAM<41>򲻷<EFBFBD><F2B2BBB7><EFBFBD><EFBFBD>ռ<D5BC><E4A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD><C2B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ZI-data<74>ܴ󣬲<DCB4><F3A3ACB2><EFBFBD><EFBFBD>ж<EFBFBD><D0B6>ڴ<EFBFBD>ռ<EFBFBD><D5BC>
#define MEM2_ALLOC_TABLE_SIZE (MEM2_MAX_SIZE/MEM2_BLOCK_SIZE) //<2F>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>С
/*<2A>ڴ<EFBFBD><DAB4><EFBFBD>(32<33>ֽڶ<D6BD><DAB6><EFBFBD>)*/
__align(32) u8 mem1base[MEM1_MAX_SIZE]; //<2F>ڲ<EFBFBD>SRAM<41>ڴ<EFBFBD><DAB4><EFBFBD>,__align(32)<29><>Ҫ<EFBFBD>ڴ<EFBFBD>32bits<74><73><EFBFBD><EFBFBD>
__align(32) u8 mem2base[MEM2_MAX_SIZE] __attribute__((at(0X68000000))); //<2F>ⲿSRAM<41>ڴ<EFBFBD><DAB4>أ<EFBFBD>__attribute__<5F>޶<EFBFBD><DEB6>ڴ<EFBFBD><DAB4><EFBFBD>ʼ<EFBFBD><CABC>ַ
/*<2A>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
u16 mem1mapbase[MEM1_ALLOC_TABLE_SIZE]; //<2F>ڲ<EFBFBD>SRAM<41>ڴ<EFBFBD><DAB4><EFBFBD>MAP
u16 mem2mapbase[MEM2_ALLOC_TABLE_SIZE] __attribute__((at(0X68000000+MEM2_MAX_SIZE))); //<2F>ⲿSRAM<41>ڴ<EFBFBD><DAB4><EFBFBD>MAP
/*<2A>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
const u32 memtblsize[SRAMBANK] = {MEM1_ALLOC_TABLE_SIZE,MEM2_ALLOC_TABLE_SIZE}; //<2F>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>С
const u32 memblksize[SRAMBANK] = {MEM1_BLOCK_SIZE,MEM2_BLOCK_SIZE}; //<2F>ڴ<EFBFBD><DAB4>ֿ<EFBFBD><D6BF><EFBFBD>С
const u32 memsize[SRAMBANK] = {MEM1_MAX_SIZE,MEM2_MAX_SIZE}; //<2F>ڴ<EFBFBD><DAB4>ܴ<EFBFBD>С
/*<2A>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD>*/
struct MallocDev_s
{
void (*init)(u8); //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
u8 (*perused)(u8); //<2F>ڴ<EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD>ʺ<EFBFBD><CABA><EFBFBD>ָ<EFBFBD><D6B8>
u8 *membase[SRAMBANK]; //<2F>ڴ<EFBFBD><DAB4>ػ<EFBFBD><D8BB><EFBFBD>ַ <20><><EFBFBD><EFBFBD>SRAMBANK<4E><4B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
u16 *memmap[SRAMBANK]; //<2F>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC>
u8 memrdy[SRAMBANK]; //<2F>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
} ;
/*<2A><><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
struct MallocDev_s sMallco_dev=
{
MyMenInit, //<2F>ڴ<EFBFBD><DAB4><EFBFBD>ʼ<EFBFBD><CABC>
MyMenPerused, //<2F>ڴ<EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD>
mem1base,mem2base, //<2F>ڴ<EFBFBD><DAB4><EFBFBD>
mem1mapbase,mem2mapbase, //<2F>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC>
0,0, //<2F>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD>
};
/****************************************************************************/
/****************************************************************************
* <EFBFBD><EFBFBD> <EFBFBD>ƣ<EFBFBD>void MyMemcpy(void *des, void *src, u32 n<EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD> <EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param1 *des:Ŀ<EFBFBD>ĵ<EFBFBD>ַ
* @param2 *src:Դ<EFBFBD><EFBFBD>ַ
* @param3 n: <EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD>(<EFBFBD>ֽ<EFBFBD>Ϊ<EFBFBD><EFBFBD>λ)
****************************************************************************/
void MyMemcpy(void *des, void *src, u32 n)
{
u8 *xdes = des ;
u8 *xsrc = src ;
while(n--)
{
*xdes++ = *xsrc++ ;
}
}
/****************************************************************************
* <EFBFBD><EFBFBD> <EFBFBD>ƣ<EFBFBD>void MyMemset(void *s,u8 c,u32 count)
* <EFBFBD><EFBFBD> <EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param1 *s:<EFBFBD>ڴ<EFBFBD><EFBFBD>׵<EFBFBD>ַ
* @param2 c :Ҫ<EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>ֵ
* @param3 count:<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD>С(<EFBFBD>ֽ<EFBFBD>Ϊ<EFBFBD><EFBFBD>λ)
****************************************************************************/
void MyMemset(void *s, u8 c, u32 count)
{
u8 *xs = s ;
while(count--)
{
*xs++ = c;
}
}
/****************************************************************************
* <EFBFBD><EFBFBD> <EFBFBD>ƣ<EFBFBD>void MyMenInit(u8 memx)
* <EFBFBD><EFBFBD> <EFBFBD>ܣ<EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param1 memx:<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD>
****************************************************************************/
void MyMenInit(u8 memx)
{
MyMemset(sMallco_dev.memmap[memx], 0,memtblsize[memx]*2);//<2F>ڴ<EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
MyMemset(sMallco_dev.membase[memx], 0,memsize[memx]); //<2F>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
sMallco_dev.memrdy[memx]=1; //<2F>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>OK
}
/****************************************************************************
* <EFBFBD><EFBFBD> <EFBFBD>ƣ<EFBFBD>u8 MyMenPerused(u8 memx)
* <EFBFBD><EFBFBD> <EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>ڴ<EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param1 memx:<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param1 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ:ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(0~100)
****************************************************************************/
u8 MyMenPerused(u8 memx)
{
u32 used = 0 ;
u32 i ;
for(i=0; i<memtblsize[memx]; i++)
{
if(sMallco_dev.memmap[memx][i])used++;
}
return (used*100)/(memtblsize[memx]) ;
}
/****************************************************************************
* <EFBFBD><EFBFBD> <EFBFBD>ƣ<EFBFBD>u8 MyMenMalloc(u8 memx)
* <EFBFBD><EFBFBD> <EFBFBD>ܣ<EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
* <EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param1 memx:<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD>
* @param2 size:Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD>С(<EFBFBD>ֽ<EFBFBD>)
* <EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param1 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ:0XFFFFFFFF,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD>ڴ<EFBFBD>ƫ<EFBFBD>Ƶ<EFBFBD>ַ
****************************************************************************/
u32 MyMenMalloc(u8 memx,u32 size)
{
signed long offset = 0 ;
u32 nmemb; //<2F><>Ҫ<EFBFBD><D2AA><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>
u32 cmemb = 0 ; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>
u32 i ;
if(!sMallco_dev.memrdy[memx]) sMallco_dev.init(memx); //δ<><CEB4>ʼ<EFBFBD><CABC>,<2C><>ִ<EFBFBD>г<EFBFBD>ʼ<EFBFBD><CABC>
if(size==0) return 0XFFFFFFFF ; //<2F><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>
nmemb = size/memblksize[memx] ; //<2F><>ȡ<EFBFBD><C8A1>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>
if(size%memblksize[memx])nmemb++ ;
for(offset=memtblsize[memx]-1; offset>=0; offset--) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
if(!sMallco_dev.memmap[memx][offset]) cmemb++; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
else cmemb=0; //<2F><><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(cmemb == nmemb) //<2F>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>nmemb<6D><62><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>
{
for(i=0; i<nmemb; i++) //<2F><>ע<EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>ǿ<EFBFBD>
{
sMallco_dev.memmap[memx][offset+i] = nmemb ;
}
return (offset*memblksize[memx]) ; //<2F><><EFBFBD><EFBFBD>ƫ<EFBFBD>Ƶ<EFBFBD>ַ
}
}
return 0XFFFFFFFF ; //δ<>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>
}
/****************************************************************************
* <EFBFBD><EFBFBD> <EFBFBD>ƣ<EFBFBD>u8 MyMemFree(u8 memx,u32 offset)
* <EFBFBD><EFBFBD> <EFBFBD>ܣ<EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD>ڴ<EFBFBD>(<EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
* <EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param1 memx:<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD>
* @param2 offset:<EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD>ַƫ<EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param1 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ:0,<EFBFBD>ͷųɹ<EFBFBD>;1,<EFBFBD>ͷ<EFBFBD>ʧ<EFBFBD><EFBFBD>;
****************************************************************************/
u8 MyMemFree(u8 memx, u32 offset)
{
int i;
if(!sMallco_dev.memrdy[memx]) //δ<><CEB4>ʼ<EFBFBD><CABC>,<2C><>ִ<EFBFBD>г<EFBFBD>ʼ<EFBFBD><CABC>
{
sMallco_dev.init(memx) ;
return 1 ; //δ<><CEB4>ʼ<EFBFBD><CABC>
}
if(offset<memsize[memx]) //ƫ<><C6AB><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>.
{
int index=offset/memblksize[memx] ; //ƫ<><C6AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int nmemb=sMallco_dev.memmap[memx][index] ; //<2F>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for(i=0;i<nmemb;i++) //<2F>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
sMallco_dev.memmap[memx][index+i]=0 ;
}
return 0 ;
}else return 2 ; //ƫ<>Ƴ<EFBFBD><C6B3><EFBFBD><EFBFBD><EFBFBD>.
}
/****************************************************************************
* <EFBFBD><EFBFBD> <EFBFBD>ƣ<EFBFBD>void MyFree(u8 memx,void *ptr)
* <EFBFBD><EFBFBD> <EFBFBD>ܣ<EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD>ڴ<EFBFBD>(<EFBFBD>ⲿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
* <EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param1 memx:<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD>
* @param2 ptr:<EFBFBD>ڴ<EFBFBD><EFBFBD>׵<EFBFBD>ַ
****************************************************************************/
void MyFree(u8 memx, void *ptr)
{
u32 offset ;
if(ptr==NULL) return ; //<2F><>ַΪ0.
offset=(u32)ptr-(u32)sMallco_dev.membase[memx] ;
MyMemFree(memx,offset) ; //<2F>ͷ<EFBFBD><CDB7>ڴ<EFBFBD>
}
/****************************************************************************
* <EFBFBD><EFBFBD> <EFBFBD>ƣ<EFBFBD>void *MyMalloc(u8 memx,u32 size)
* <EFBFBD><EFBFBD> <EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>(<EFBFBD>ⲿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
* <EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param1 memx:<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD>
* @param2 size:<EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD>С(<EFBFBD>ֽ<EFBFBD>)
* <EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param1 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ:<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD>׵<EFBFBD>ַ.
****************************************************************************/
void *MyMalloc(u8 memx, u32 size)
{
u32 offset ;
offset = MyMenMalloc(memx,size) ;
if(offset==0XFFFFFFFF) return NULL ;
else return (void*)((u32)sMallco_dev.membase[memx]+offset) ;
}
/****************************************************************************
* <EFBFBD><EFBFBD> <EFBFBD>ƣ<EFBFBD>void *MyRealloc(u8 memx,void *ptr,u32 size)
* <EFBFBD><EFBFBD> <EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>(<EFBFBD>ⲿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
* <EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param1 memx:<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD>
* @param2 *ptr:<EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD>׵<EFBFBD>ַ
* @param3 size:Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD>С(<EFBFBD>ֽ<EFBFBD>)
* <EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param1 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ:<EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD>׵<EFBFBD>ַ
****************************************************************************/
void *MyRealloc(u8 memx, void *ptr, u32 size)
{
u32 offset ;
offset = MyMenMalloc(memx,size) ;
if(offset==0XFFFFFFFF) return NULL ;
else
{
MyMemcpy((void*)((u32)sMallco_dev.membase[memx]+offset),ptr,size) ; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD><EFBFBD>ڴ<EFBFBD>
MyFree(memx,ptr) ; //<2F>ͷž<CDB7><C5BE>ڴ<EFBFBD>
return (void*)((u32)sMallco_dev.membase[memx]+offset) ; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4>׵<EFBFBD>ַ
}
}