diff --git a/man2/membarrier.2 b/man2/membarrier.2 index b3a94f95f..81d573dd5 100644 --- a/man2/membarrier.2 +++ b/man2/membarrier.2 @@ -92,16 +92,18 @@ All threads on the system are targeted by this command. Execute a memory barrier on all running threads of all processes that previously registered with .BR MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED . -Upon return from the system call, the calling thread is ensured that all +Upon return from the system call, the calling thread has a guarantee that all running threads have passed through a state where all memory accesses to user-space addresses match program order between entry to and return from the system call (non-running threads are de facto in such a state). -This covers only threads from processes which registered with +This guarantee is provided only for the threads of processes that +previously registered with .BR MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED . Given that registration is about the intent to receive the barriers, it is valid to invoke .BR MEMBARRIER_CMD_GLOBAL_EXPEDITED -from a non-registered process. +from a process that has not employed +.BR MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED . .IP The "expedited" commands complete faster than the non-expedited ones; they never block, but have the downside of causing extra overhead. @@ -113,17 +115,18 @@ memory barriers. .TP .BR MEMBARRIER_CMD_PRIVATE_EXPEDITED " (since Linux 4.14)" Execute a memory barrier on each running thread belonging to the same -process as the current thread. -Upon return from system call, the calling -thread is assured that all its running threads siblings have passed +process as the calling thread. +Upon return from the system call, the calling +thread has a guarantee that all its running thread siblings have passed through a state where all memory accesses to user-space addresses match program order between entry to and return from the system call (non-running threads are de facto in such a state). -This covers only threads from the same process as the calling thread. +This guarantee is provided only for threads in +the same process as the calling thread. .IP The "expedited" commands complete faster than the non-expedited ones; they never block, but have the downside of causing extra overhead. -A process needs to register its intent to use the private +A process must register its intent to use the private expedited command prior to using it. .TP .BR MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED " (since Linux 4.14)" @@ -133,12 +136,13 @@ Register the process's intent to use .BR MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE " (since Linux 4.16)" In addition to providing the memory ordering guarantees described in .BR MEMBARRIER_CMD_PRIVATE_EXPEDITED , -ensure the calling thread, upon return from system call, that all its -running threads siblings have executed a core serializing instruction. -This only covers threads from the same process as the calling thread. +upon return from system call the calling thread has a guarantee that all its +running thread siblings have executed a core serializing instruction. +This guarantee is provided only for threads in +the same process as the calling thread. The "expedited" commands complete faster than the non-expedited ones, they never block, but have the downside of causing extra overhead. -A process needs to register its intent to use the private expedited sync +A process must register its intent to use the private expedited sync core command prior to using it. .TP .BR MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE " (since Linux 4.16)"