Provided by: libck-dev_0.7.2-5ubuntu1_amd64 bug

NAME

       ck_pr_fence_load_atomic — enforce ordering of load operations to atomic read-modify-write operations

LIBRARY

       Concurrency Kit (libck, -lck)

SYNOPSIS

       #include <ck_pr.h>

       void
       ck_pr_fence_load_atomic(void);

       void
       ck_pr_fence_strict_load_atomic(void);

DESCRIPTION

       This function enforces the ordering of any memory load and ck_pr_load(3) operations with respect to store
       operations relative to the invocation of the function. Any store operations that were committed on remote
       processors  and  received  by the calling processor before the invocation of ck_pr_fence_load_atomic() is
       also be made visible only after a call to the ck_pr_fence_load family of functions.  This function always
       serves as an implicit compiler barrier.  On architectures with CK_MD_TSO or  CK_MD_PSO  specified  (total
       store ordering and partial store ordering respectively), this operation only serves as a compiler barrier
       and  no  fence  instructions  will  be  emitted. To force the unconditional emission of a load fence, use
       ck_pr_fence_strict_load_atomic().  Architectures implementing CK_MD_RMO always emit a fence.

EXAMPLE

             #include <ck_pr.h>

             static unsigned int a;
             static unsigned int b;

             void
             function(void)
             {
                     unsigned int snapshot_a, snapshot_b;

                     snapshot_a = ck_pr_load_uint(&a);

                     /*
                      * Guarantee that the load from "a" completes
                      * before the update to "b".
                      */
                     ck_pr_fence_load_atomic();
                     ck_pr_fas_uint(&b, 1);

                     return;
             }

RETURN VALUES

       This function has no return value.

SEE ALSO

       ck_pr_stall(3),    ck_pr_fence_atomic(3),    ck_pr_fence_atomic_store(3),     ck_pr_fence_atomic_load(3),
       ck_pr_fence_load_depends(3),   ck_pr_fence_load_store(3),   ck_pr_fence_store(3),  ck_pr_fence_memory(3),
       ck_pr_barrier(3), ck_pr_fas(3), ck_pr_load(3), ck_pr_store(3), ck_pr_faa(3), ck_pr_inc(3),  ck_pr_dec(3),
       ck_pr_neg(3),   ck_pr_not(3),   ck_pr_add(3),   ck_pr_sub(3),  ck_pr_and(3),  ck_pr_or(3),  ck_pr_xor(3),
       ck_pr_cas(3), ck_pr_btc(3), ck_pr_bts(3), ck_pr_btr(3)

       Additional information available at http://concurrencykit.org/

                                                  May 18, 2013                        CK_PR_FENCE_LOAD_ATOMIC(3)