Updated: April 19, 2023 |
Copy bytes from one buffer to another
#include <string.h> void* memcpy( void* dst, const void* src, size_t length ); void* memcpy_isr( void* dst, const void* src, size_t length );
libc
Use the -l c option to qcc to link against this library. This library is usually included automatically.
The memcpy() function copies length bytes from the buffer pointed to by src into the buffer pointed to by dst.
The memcpy_isr() function does the same thing, but avoids using special-purpose registers (e.g., sse2) that incur additional cost when their state is saved during context switches. The relative performance of a process using this first or second function can be better or worse depending on the frequency and sizes of memory-copying operations, the specific target, and what other processes are doing. If memory copying does not play a major role in the process's overall performance, which function is faster isn't so important. Otherwise, developers are strongly encouraged to do their own testing and select the correct function.
In this release, both memcpy() and memcpy_isr() are safe to call from an interrupt handler.
A pointer to the destination buffer (that is, the value of dst).
#include <stdio.h> #include <string.h> #include <stdlib.h> int main( void ) { char buffer[80]; memcpy( buffer, "Hello", 5 ); buffer[5] = '\0'; printf( "%s\n", buffer ); return EXIT_SUCCESS; }
Processes that register ISRs shouldn't use the NEON versions.
memcpy() is ANSI, POSIX 1003.1; memcpy_isr() is QNX Neutrino.
Safety: | |
---|---|
Cancellation point | No |
Interrupt handler | Yes |
Signal handler | Yes |
Thread | Yes |