...
lib_mem.h/lib_mem.c
Prototype
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
void Mem_Copy ( void *pdest,
const void *psrc,
CPU_SIZE_T size);
|
Arguments
pdest
Pointer to the destination memory buffer.
...
- Zero-sized copies allowed.
- Memory buffers not checked for overlapping. However, data octets from a source memory buffer at a higher address value should successfully copy to a destination memory buffer at a lower address value even if any octets of the memory buffers overlap as long as no individual copy overlaps. Since
Mem_Copy()
performs the data octet copy viaCPU_ALIGN
-sized words and/or octets; and sinceCPU_ALIGN
-sized words must be accessed on word-aligned addresses, neitherCPU_ALIGN
-sized words nor octets at unique addresses can ever overlap. Therefore,Mem_Copy()
should be able to successfully copy overlapping memory buffers as long as the source memory buffer is at a higher address value than the destination memory buffer. - This function can be configured to build an assembly-optimized version.
Example Usage
Code Block | Language | C++|||
---|---|---|---|---|
| ||||
CPU_INT08U AppBuf[10];
CPU_INT08U DataBuf[20];
/* Set data buffer with value. */
Mem_Set ((void *)&DataBuf[0],
(CPU_INT08U) 0x64,
(CPU_SIZE_T) sizeof(DataBuf));
/* Copy data buffer to app buffer. */
Mem_Copy((void *)&AppBuf[0],
(void *)&DataBuf[0],
(CPU_SIZE_T) sizeof(AppBuf));
|