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 is similar, but it's safe for you to use in an interrupt service routine.
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 | Read the Caveats |
Signal handler | Yes |
Thread | Yes |
Safety: | |
---|---|
Cancellation point | No |
Interrupt handler | Yes |
Signal handler | Yes |
Thread | Yes |
Implementations of memcpy() that are optimized using SIMD instructions aren't safe to use in an interrupt handler. These include the NEON implementations on ARMv7 and AArch64.