MEMBAR_OPS(3) BSD Library Functions Manual MEMBAR_OPS(3)NAME
membar_ops, membar_enter, membar_exit, membar_producer, membar_consumer,
membar_sync — memory access barrier operations
SYNOPSIS
#include <sys/atomic.h>
void
membar_enter(void);
void
membar_exit(void);
void
membar_producer(void);
void
membar_consumer(void);
void
membar_sync(void);
DESCRIPTION
The membar_ops family of functions provide memory access barrier opera‐
tions necessary for synchronization in multiprocessor execution environ‐
ments that have relaxed load and store order.
membar_enter()
Any store preceding membar_enter() will reach global visibility
before all loads and stores following it.
membar_enter() is typically used in code that implements locking
primitives to ensure that a lock protects its data.
membar_exit()
All loads and stores preceding membar_exit() will reach global visi‐
bility before any store that follows it.
membar_exit() is typically used in code that implements locking
primitives to ensure that a lock protects its data.
membar_producer()
All stores preceding the memory barrier will reach global visibility
before any stores after the memory barrier reach global visibility.
membar_consumer()
All loads preceding the memory barrier will complete before any
loads after the memory barrier complete.
membar_sync()
All loads and stores preceding the memory barrier will complete and
reach global visibility before any loads and stores after the memory
barrier complete and reach global visibility.
SEE ALSOatomic_ops(3)HISTORY
The membar_ops functions first appeared in NetBSD 5.0.
BSD February 11, 2007 BSD