26 Commits

Author SHA1 Message Date
bjk
f915e97cac Fix typo 2017-01-03 21:11:30 +00:00
mjg
510ddab00f Add the upcoming atomic_fcmpset family to the atomic(9) man page.
These primitives give the caller the read value if the exchange attempt
failed which saves an explicit reload for cmpset loops.

The man page was partially submitted by kib.

Reviewed by:	kib (previous version), jhb (previous version)
2017-01-03 20:59:50 +00:00
sephe
6babf96582 atomic: Add testandclear on i386/amd64
Reviewed by:	kib
Sponsored by:	Microsoft OSTC
Differential Revision:	https://reviews.freebsd.org/D6381
2016-05-16 07:19:33 +00:00
alc
66c058ca9c Stop describing an acquire operation as a read barrier and a release
operation as a write barrier.  That description has never been correct,
and it has caused confusion.  An acquire operation orders writes as well
as reads, and a release operation orders reads as well as writes.

Also, explicitly say that a thread doesn't see its own accesses being
reordered.  The reordering of a thread's accesses is only (potentially)
visible to another thread.  Thus, memory barriers need only be used to
control the ordering of accesses between threads, not within a thread.

Reviewed by:	bde, kib
Discussed with:	jhb
MFC after:	1 week
2015-08-14 17:49:03 +00:00
alc
8de2d0e833 Revise the text about the atomicity of the defined operations across
multiple processors.  In particular, clearly state that the operations
are always atomic when they are applied to the default memory type
that is used by the kernel (and applications).

Reviewed by:	kib, jhb (an earlier version)
MFC after:	1 week
2015-08-09 07:45:15 +00:00
kib
d04dd21a0b The barriers, provided by _acq and _rel atomics, are acquire and
release barriers, not read and write barriers.  They fence all memory
accesses from the respective side, not limited by the kind of
operation.

Reviewed by:	jhb
Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
2015-06-20 17:18:46 +00:00
marcel
9f28abd980 Remove ia64.
This includes:
o   All directories named *ia64*
o   All files named *ia64*
o   All ia64-specific code guarded by __ia64__
o   All ia64-specific makefile logic
o   Mention of ia64 in comments and documentation

This excludes:
o   Everything under contrib/
o   Everything under crypto/
o   sys/xen/interface
o   sys/sys/elf_common.h

Discussed at: BSDcan
2014-07-07 00:27:09 +00:00
joel
df7871af7a Minor mdoc nit. 2013-08-22 16:00:09 +00:00
jkim
f354dbfd86 Implement atomic_swap() and atomic_testandset().
Reviewed by:	arch, bde, jilles, kib
2013-08-21 22:03:06 +00:00
uqs
bf0dc93ef1 mdoc: Garbage collect unused/unneeded macros 2010-05-27 13:56:27 +00:00
uqs
3960614646 mdoc: order prologue macros consistently by Dd/Dt/Os
Although groff_mdoc(7) gives another impression, this is the ordering
most widely used and also required by mdocml/mandoc.

Reviewed by:	ru
Approved by:	philip, ed (mentors)
2010-04-14 19:08:06 +00:00
jhb
57032de649 Attempt to clarify some confusing wording regarding atomic_load() and
atomic_store().
2009-05-21 13:39:46 +00:00
pjd
ea49d310bf Implement atomic_fetchadd_long() for all architectures and document it.
Reviewed by:	attilio, jhb, jeff, kris (as a part of the uidinfo_waitfree.patch)
2008-03-16 21:20:50 +00:00
ru
8a2652d669 -mdoc sweep. 2005-11-18 10:56:28 +00:00
jhb
c95731aa8e - Document atomic_fetchadd(9) and add a MLINK.
- Add arm and ppc to the list of archs not supporting operations on 64-bit
  integers.
- Update the sample code for acquiring a mutex to be more recent and to
  take into account the recent atomic_foo_ptr() changes.

MFC after:	1 week
2005-09-27 17:59:29 +00:00
hmp
5d71788a05 Some mdoc(7) fixes:
Nuke incorrect usage of .Ar; replace it with .Vt, .Va or .Fa appropriately.
The .Ar mdoc(7) specifier should only be used when displaying command line
arguments.

Approved by:	des (mentor)
2003-05-31 14:07:25 +00:00
ru
27af5a5a04 mdoc(7) police: removed raw troff from previous delta.
Objected to by:	mpp, jhb
2002-01-17 15:57:43 +00:00
ru
b3b66ade4f mdoc(7) police:
- make SYNOPSIS look better with some troff magic
- tidy up the markup
2002-01-10 10:36:04 +00:00
mpp
52a504f88d ispell sweep of share/man/man9/*. 2002-01-09 11:43:48 +00:00
jake
0235ad48e8 Note that the atomic ops on char and short data types may not be available
on all architectures.  Sparc64 does not implement them.
2001-12-15 21:28:02 +00:00
ru
623da62a5a mdoc(7) police: Use the new .In macro for #include statements. 2001-10-01 16:09:29 +00:00
schweikh
5ef4115668 Fixed double word typo.
MFC after:	7 days
2001-07-13 20:11:43 +00:00
jhb
b1aac95920 Add 2001 to copyright. 2001-03-09 03:17:18 +00:00
bde
4cfcac144d Fixed missing and/or wrong and/or extra includes in synopsis. 2001-02-15 11:47:31 +00:00
jhb
3e12cdd636 Fix some nits in the globs used to describe the various sets of atomic
operations.

Submitted by:	jake, jasone
2000-12-08 22:10:28 +00:00
jhb
6e89ba0697 Add a manpage to document the atomic operations including a quick treatment
of memory barriers and the newish atomic variants that include them.

Reviewed by:	sheldonh
2000-11-13 20:08:17 +00:00