Manual Page Result
0
Command: membar_sync | Section: 9 | Source: OpenBSD | File: membar_sync.9
MEMBAR(9) FreeBSD Kernel Developer's Manual MEMBAR(9)
NAME
membar_enter, membar_exit, membar_producer, membar_consumer, membar_sync,
membar_enter_after_atomic, membar_exit_before_atomic - 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);
void
membar_enter_after_atomic(void);
void
membar_exit_before_atomic(void);
DESCRIPTION
The membar set of functions provide an interface for issuing memory
barrier access operations with respect to multiple processors in the
system.
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
visibility 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.
membar_enter_after_atomic()
An atomic operation preceding membar_enter_after_atomic() will reach
global visibility before all loads and stores following it. The
atomic operation is used to protect the start of a critical section.
membar_exit_before_atomic()
All loads and stores preceding membar_exit_before_atomic() will
reach global visibility before atomic operation that follows it.
The atomic operation is used to protect the end of a critical
section.
The atomic operations that can be used with membar_enter_after_atomic()
and membar_exit_before_atomic() are the atomic_add, atomic_sub,
atomic_inc, atomic_dec, and atomic_cas set of functions. For other cases
use membar_enter() or membar_exit().
CONTEXT
membar_enter(), membar_exit(), membar_producer(), membar_consumer(),
membar_sync(), membar_enter_after_atomic(), membar_exit_before_atomic()
can all be called during autoconf, from process context, or from
interrupt context.
HISTORY
The membar functions first appeared in NetBSD 5.0 and OpenBSD 5.5.
FreeBSD 14.1-RELEASE-p8 March 13, 2022 FreeBSD 14.1-RELEASE-p8