Skip to content



membarrier - executes a memory barrier on a set of threads.


The membarrier() system call is used to execute a memory barrier inside live application threads. Memory barriers ensure that the read and write operations issued before a barrier operation are visible to all other threads before any of the operations issued after the barrier finish their execution. This enables synchronization between threads in an application without the need for explicit locks.

Administrators can use this system call to control the order of writes to shared memory areas between different threads, as well as to make sure that all writes memory operations performed before the syscall will take effect before any further operations are executed.


  • cmd:int[K] - specifies the type of barrier to execute. Possible values are: MEMBARRIER_CMD_SHARED (wait for the completion of all memory operations started before the call) and MEMBARRIER_CMD_PRIVATE (wait for the completion of all memory operations started by the calling thread).
  • flags:int[K] - a bitmask of flags to customize the behavior of the membarrier() function.

Available Tags

  • K - Originated from kernel-space.






To intercept the system call before it is executed.

Example Use Case

A useful example of membarrier() would be to make sure that two threads accessing the same variable in a shared memory area coordinate their access without the need to explicitly use locks.


It is important to note that membarrier() only guarantees an ordering between memory operations issued within the same thread, or between threads. Any operations that occur within the same thread before or after the membarrier() call are not necessarily ordered.

sync_file_range(), msync(), fdatasync()

This document was automatically generated by OpenAI and needs review. It might not be accurate and might contain errors. The authors of Tracee recommend that the user reads the "events.go" source file to understand the events and their arguments better.