ck_pr_fence_load(3)

ck_pr_fence_load3

Enforce partial ordering of load operations

Usage

#include <ck_pr.h>

void

ck_pr_fence_load(void);

void

ck_pr_fence_strict_load(void);

Library

Concurrency Kit (libck, -lck)

Overview

This function enforces the ordering of any memory load and ck_pr_load(3) 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() is also be made visible only after a call to ck_pr_fence_load(). 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(). Architectures implementing CK_MD_RMO always emit a load fence.

Examples

#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 load from "b".
	 */
	ck_pr_fence_load();
	snapshot_b = ck_pr_load_uint(&b);
	return;
}

Return values

This function has no return value.

Releases

5 releases since Debian 8 (Jessie); the text changed 1 time.

  1. 8
  2. 9–13

From libck-dev 0.7.2-6 in Debian 13 (Trixie). Parsed by carta from the page's mdoc source.