*** UNIX MANUAL PAGE BROWSER ***

A Nergahak database for man pages research.

Navigation

Directory Browser

1Browse 4.4BSD4.4BSD
1Browse Digital UNIXDigital UNIX 4.0e
1Browse FreeBSDFreeBSD 14.3
1Browse MINIXMINIX 3.4.0rc6-d5e4fc0
1Browse NetBSDNetBSD 10.1
1Browse OpenBSDOpenBSD 7.7
1Browse UNIX v7Version 7 UNIX
1Browse UNIX v10Version 10 UNIX

Manual Page Search

Manual Page Result

0 Command: membarrier | Section: 2 | Source: FreeBSD | File: membarrier.2.gz
MEMBARRIER(2) FreeBSD System Calls Manual MEMBARRIER(2) NAME membarrier - memory barrier LIBRARY Standard C Library (libc, -lc) SYNOPSIS #include <sys/membarrier.h> int membarrier(int cmd, unsigned flags, int cpu_id); DESCRIPTION The membarrier system call provides a memory barrier, ensuring ordering between memory accesses performed by different threads or processes within the same address space. The following values for cmd may be specified: MEMBARRIER_CMD_QUERY Query supported commands. A bitmask of commands supported by the kernel is returned. MEMBARRIER_CMD_GLOBAL Issue a memory barrier for all threads from all processes. MEMBARRIER_CMD_SHARED This is an alias for MEMBARRIER_CMD_GLOBAL. MEMBARRIER_CMD_GLOBAL_EXPEDITED Execute a memory barrier on all running threads of all processes registered with MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED. MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED Register the process to receive MEMBARRIER_CMD_GLOBAL_EXPEDITED memory barriers. MEMBARRIER_CMD_PRIVATE_EXPEDITED Execute a memory barrier on each running thread belonging to the same process as the thread calling membarrier. MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED Register the process to receive MEMBARRIER_CMD_PRIVATE_EXPEDITED memory barriers. MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE In addition to the guarantees provided by MEMBARRIER_CMD_PRIVATE_EXPEDITED it also executes machine- specific serialization instructions, which ensures that all possible speculative and out-of-order activities on the target CPU are fenced. MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE Register the process to receive MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE memory barriers. The following cmd values are defined for source compatibility but are not yet supported: MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ The flags argument must be 0. The cpu_id argument is ignored. RETURN VALUES If the cmd is MEMBARRIER_CMD_QUERY a bitmask of supported commands is returned. Otherwise, on success, membarrier returns 0. On error, -1 is returned and errno is set to indicate the error. ERRORS membarrier may fail with the following errors: [EINVAL] cmd does not specify a valid command. [EINVAL] flags is not 0. [EPERM] An attempt was made to use MEMBARRIER_CMD_GLOBAL_EXPEDITED, MEMBARRIER_CMD_PRIVATE_EXPEDITED, or MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE by a process that did not previously register use with the corresponding MEMBARRIER_CMD_REGISTER_* cmd. STANDARDS The membarrier system call originated in Linux. This implementation aims to be source-compatible with the Linux implementation. Certain cmd and flags values are currently not supported by FreeBSD. HISTORY The membarrier function was introduced in FreeBSD 14.1. FreeBSD 14.1-RELEASE-p8 October 6, 2024 FreeBSD 14.1-RELEASE-p8

Navigation Options