\( % Arcus cosine. \def\acos{\cos^{-1}} % Vector projection. \def\projection#1#2{{proj_{#1}\left(#2\right)}} % Vector rejection. \def\rejection#1#2{{rej_{#1}\left(#2\right)}} % Norm. \def\norm#1{{\left\|#1\right\|}} % Cross product. \def\cross#1#2{\mathit{cross}\left(#1,#2\right)} % Dot product. \def\dot#1#2{{#1 \cdot #2}} % Magnitude. \def\mag#1{{\left|#1\right}} \def\group#1{\left(#1\right)}} \def\sbgrp#1{\left\{#1\right\}} \)

Ring1_Memory_copySlow

Copy Bytes from a source memory block to a target memory block.

Ring1_Result
Ring1_Memory_copySlow
  (
    void *p,
    const void *q,
    size_t n
  )

This function copies n Bytes from a source memory block pointed to by q to a target memory block pointed to by p.

This function handles copying between overlapping memory blocks However, its slower than Ring1_Memory_copyFast. If you can assert that the memory blocks are not overlapping, use the faster Ring1_Memory_copyFast.

Parameter variables

p
A pointer to the target memory block.
q
A pointer to the source memory block.
n
The number of Bytes to copy.

Return value

This function returns 0 on success, a non-zero value on failure.

Post Conditions

If this function fails, then it sets the by-thread status variable.

Below is a list of failure conditions and the status codes indicating them.

Ring1_Status_InvalidArgument

if p and/or q is NULL

If this function fails, neither p nor p is not dereferenced.