__INSN_BARRIER(3)

__INSN_BARRIER(3) | Library Functions Manual | __INSN_BARRIER(3)

# NAME

`__insn_barrier` —
compiler reorder barrier

# SYNOPSIS

`#include <sys/cdefs.h>`

void
`__insn_barrier`();

# DESCRIPTION

The `__insn_barrier`() macro prevents GCC from moving code across the barrier. In other words, the compiler is not allowed to reorder read and write commands below the barrier with the code preceding the barrier. Like with the volatile type qualifier, `__insn_barrier`() may be necessary in some corner cases to prevent the compiler from misoptimizing.

# SEE ALSO

gcc(1), cdefs(3), membar_ops(3)

Paul E. McKenney, Memory Barriers: a Hardware View for Software Hackers, http://www.rdrop.com/users/paulmck/scalability/paper/whymb.2010.06.07c.pdf, June 7, 2010.

# HISTORY

The `__insn_barrier`() macro first appeared in NetBSD 2.0.

January 2, 2011 | NetBSD 10.0