Quantcast
Channel: Active questions tagged gcc - Stack Overflow
Viewing all articles
Browse latest Browse all 22002

memcpy for volatile arrays in gcc C on x86?

$
0
0

I am using the C volatile keyword in combination with x86 memory ordering guarantees (writes are ordered with writes, and reads are ordered with reads) to implement a barrier-free message queue. Does gcc provide a builtin function that efficiently copies data from one volatile array to another?

I.e. is there a builtin/efficient function that we could call as memcpy_volatile is used in the following example?

uint8_t volatile      * dest = ...;uint8_t volatile const* src  = ...;int     len;memcpy_volatile(dest, src, len);

rather than writing a naive loop?

This question is NOT about the popularity of barrier-free C programs. I am perfectly aware of barrier-based alternatives. This question is, therefore, also NOT a duplicate of any question where the answer is "use barrier primitives".

This question is also NOT a duplicate of similar questions that are not specific to x86/gcc, where of course the answer is "there's no general mechanism that works on all platforms".


Viewing all articles
Browse latest Browse all 22002

Trending Articles