129 lines
2.4 KiB
C
129 lines
2.4 KiB
C
/*——————————————————————————
|
||
* 文 件 名:Mem.c
|
||
* 文件说明:内存拷贝源文件
|
||
*
|
||
* 当前版本:V8.0
|
||
* 作 者:ZL
|
||
* 开始日期:2013-12-30
|
||
*———————————————————————————*/
|
||
#include "Mem.h"
|
||
|
||
|
||
/************* 函数声明 *************/
|
||
/*——————————————————————————
|
||
* 函 数 名:MemCpy
|
||
* 输入参数:pSrc 源内存指针
|
||
len 数据长度
|
||
* 输出参数:pDsc 目的内在指针
|
||
* 返 回 值:拷贝后的目的偏移地址
|
||
* 功能说明:拷贝一段内存内容
|
||
*——————————————————————————*/
|
||
u8 *MemCpy(void *pDsc, void*pSrc, u16 len)
|
||
{
|
||
u8 *pAddr1 = (u8 *)pDsc;
|
||
u8 *pAddr2 = (u8 *)pSrc;
|
||
|
||
while(len--)
|
||
{
|
||
*pAddr1++ = *pAddr2++;
|
||
}
|
||
|
||
return pAddr1;
|
||
}
|
||
|
||
|
||
|
||
/*——————————————————————————
|
||
* 函 数 名:MemSet
|
||
* 输入参数:pAddr 内存指针
|
||
value 需要设置的值
|
||
len 数据长度
|
||
* 输出参数:None
|
||
* 返 回 值:None
|
||
* 功能说明:设置某一段内容为某值
|
||
*——————————————————————————*/
|
||
void MemSet(void *pAddr, u8 value, u16 len)
|
||
{
|
||
u8 *pTmp = (u8 *)pAddr;
|
||
|
||
while(len--)
|
||
{
|
||
*pTmp++ = value;
|
||
}
|
||
}
|
||
|
||
|
||
|
||
/*——————————————————————————
|
||
* 函 数 名:MemCmp
|
||
* 输入参数:pDsc 目的地址
|
||
pSrc 源地址
|
||
Len 数据长度
|
||
* 输出参数:None
|
||
* 返 回 值:1 不一致
|
||
0 一致
|
||
* 功能说明:比较两个内存中的值
|
||
*——————————————————————————*/
|
||
u8 MemCmp(void *pDsc, void *pSrc, u16 len)
|
||
{
|
||
u8 *pAddr1 = (u8 *)pDsc;
|
||
u8 *pAddr2 = (u8 *)pSrc;
|
||
|
||
while(len--)
|
||
{
|
||
if (*pAddr1 != *pAddr2)
|
||
{
|
||
return 1;
|
||
}
|
||
|
||
pAddr1++;
|
||
pAddr2++;
|
||
}
|
||
|
||
return 0;
|
||
}
|
||
|
||
/*——————————————————————————
|
||
* 函 数 名:MemCmpData
|
||
* 输入参数:buf 数据区
|
||
data 比较数据
|
||
len 数据长度
|
||
* 输出参数:None
|
||
* 返 回 值:>0 不一致
|
||
0 一致
|
||
* 功能说明:比较内存中的值与某个数据一致
|
||
*——————————————————————————*/
|
||
u8 MemCmpData(const u8 *buf,u8 data,u16 len)
|
||
{
|
||
while(len--)
|
||
{
|
||
if(buf[len] != data)
|
||
{
|
||
return buf[len]-data;
|
||
}
|
||
}
|
||
|
||
return 0;
|
||
}
|
||
|
||
|
||
void * w_memcpy( void *out, const void *in, size_t n)
|
||
{
|
||
uint8_t *src, *dest;
|
||
src = (uint8_t *) in;
|
||
dest = (uint8_t *) out;
|
||
while(n-- > 0) {
|
||
*dest++ = *src++;
|
||
}
|
||
return out;
|
||
}
|
||
|
||
void *w_memset(void *out, int value, size_t n)
|
||
{
|
||
uint8_t *dest;
|
||
dest = (uint8_t *) out;
|
||
while(n-- > 0) {
|
||
*dest++ = value & 0xff;
|
||
}
|
||
return out;
|
||
} |