Mem_Copy()

Copy data octets from one memory buffer to another memory buffer.

Files

lib_mem.h/lib_mem.c

Prototype

          void  Mem_Copy (       void        *pdest,
                          const  void        *psrc,
                                 CPU_SIZE_T   size);

Arguments

pdest

Pointer to the destination memory buffer.

psrc

Pointer to the source memory buffer.

size

Number of octets to copy.

Returned Value

None.

Required Configuration

None.

Notes / Warnings

  1. Zero-sized copies allowed.
  2. 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 via CPU_ALIGN-sized words and/or octets; and since CPU_ALIGN-sized words must be accessed on word-aligned addresses, neither CPU_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.
  3. This function can be configured to build an assembly-optimized version.

Example Usage

          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));