define LFDS711_PAL_BARRIER_PROCESSOR_STORE

From liblfds.org
Jump to: navigation, search

Source File

└───liblfds711
    └───inc
        └───liblfds711
                lfds711_porting_abstraction_layer_compiler.h

Define

#define LFDS711_PAL_BARRIER_PROCESSOR_STORE  [processor store barrier directive]

Example

#define LFDS711_PAL_BARRIER_PROCESSOR_STORE  __atomic_thread_fence( __ATOMIC_REL )

Optionality

This define is not mandatory, the library will compile without it, but if it is actually needed, and not provided, then things can go wrong (they might not, but it would be purely by chance). If it not provided, it must be absent, rather than being empty.

Notes

Processors typically are able to re-order the flow of instructions, where this re-ordering is only guaranteed to be valid within the context of a single thread; e.g. if thread A performs an operation and then raises a flag, where thread B is waiting on the flag, the processor will in its re-ordering only take into account that the behaviour of the thread being re-ordered remains valid, such that in this case we might see in thread A the flag being raised before the operation is performed, since the processor isn't taking into account that thread B is written on the assumption the flag will be raised after the operation.

Compilers typically offer a directive which acts as a processor store barrier, where a processor store barrier the prevents the processor re-ordering store operations below the barrier above the barrier and prevents the processor re-ordering store operations above the barrier to below the barrier.

See Also