> Date: Sun, 13 Mar 2022 22:43:56 +0100
> From: Alexander Bluhm <[email protected]>
> 
> On Thu, Mar 10, 2022 at 10:12:40PM +0100, Mark Kettenis wrote:
> > > Date: Thu, 10 Mar 2022 21:53:13 +0100
> > > From: Alexander Bluhm <[email protected]>
> > >
> > > Hi,
> > >
> > > claudio@ mentioned that documentation for membar_enter_after_atomic
> > > and membar_exit_before_atomic is missing.
> > >
> > > ok?
> >
> > I think this is fine, although it doesn't actually define what an
> > "atomic operation" is in this context.  Now we we only actually
> > provide an optimized implementation on x86; on all other architectures
> > that we support, these are just aliases for membar_enter() and
> > membar_exit().  So all x86 operations that perform a bus lock are
> > supported.  However the atomic_load_xxx() and atomic_store_xxx()
> > operations you just introduced do not fall into this category.
> 
> I added a paragraph explaining where membar atomic can be used.

You missed atomic_cas.

> > Not sure if that needs spelling out.  And if it does, maybe the chosen
> > names for those functions are wrong?
> 
> Names atomic_load/store are used in FreeBSD and NetBSD.  Linux calls
> them atomic_read/set.

Best to stick with the FreeBSD and NetBSD names.

> Index: share/man/man9/membar_sync.9
> ===================================================================
> RCS file: /data/mirror/openbsd/cvs/src/share/man/man9/membar_sync.9,v
> retrieving revision 1.3
> diff -u -p -r1.3 membar_sync.9
> --- share/man/man9/membar_sync.9      14 Feb 2014 05:11:55 -0000      1.3
> +++ share/man/man9/membar_sync.9      13 Mar 2022 20:59:27 -0000
> @@ -35,7 +35,9 @@
>  .Nm membar_exit ,
>  .Nm membar_producer ,
>  .Nm membar_consumer ,
> -.Nm membar_sync
> +.Nm membar_sync ,
> +.Nm membar_enter_after_atomic ,
> +.Nm membar_exit_before_atomic
>  .Nd memory access barrier operations
>  .Sh SYNOPSIS
>  .In sys/atomic.h
> @@ -49,6 +51,10 @@
>  .Fn membar_consumer "void"
>  .Ft void
>  .Fn membar_sync "void"
> +.Ft void
> +.Fn membar_enter_after_atomic "void"
> +.Ft void
> +.Fn membar_exit_before_atomic "void"
>  .Sh DESCRIPTION
>  The membar set of functions provide an interface for issuing memory barrier
>  access operations with respect to multiple processors in the system.
> @@ -79,14 +85,38 @@ after the memory barrier complete.
>  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.
> +.It Fn membar_enter_after_atomic
> +An atomic operation preceding
> +.Fn 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.
> +.It Fn membar_exit_before_atomic
> +All loads and stores preceding
> +.Fn 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.
>  .El
> +.Pp
> +The atomic operations that can be used with
> +.Fn membar_enter_after_atomic
> +and
> +.Fn membar_exit_before_atomic
> +are the atomic_add, atomic_sub, atomic_inc, and atomic_dec set of
> +functions.
> +For other cases use
> +.Fn membar_enter
> +or
> +.Fn membar_exit .
>  .Sh CONTEXT
>  .Fn membar_enter ,
>  .Fn membar_exit ,
>  .Fn membar_producer ,
>  .Fn membar_consumer ,
> -.Fn membar_sync
> -can all be called during autoconf, from process context, or from interrupt 
> context.
> +.Fn membar_sync ,
> +.Fn membar_enter_after_atomic ,
> +.Fn membar_exit_before_atomic
> +can all be called during autoconf, from process context, or from
> +interrupt context.
>  .Sh HISTORY
>  The membar functions first appeared in
>  .Nx 5.0
> 

Reply via email to