The NetBSD Project

CVS log for src/sys/sys/atomic.h

[BACK] Up to [cvs.NetBSD.org] / src / sys / sys

Request diff between arbitrary revisions


Keyword substitution: kv
Default branch: MAIN


Revision 1.26: download - view: text, markup, annotated - select for diffs
Sun Jul 31 11:28:46 2022 UTC (2 years, 4 months ago) by martin
Branches: MAIN
CVS tags: thorpej-ifq-base, thorpej-ifq, thorpej-altq-separation-base, thorpej-altq-separation, perseant-exfatfs-base-20240630, perseant-exfatfs-base, perseant-exfatfs, netbsd-10-base, netbsd-10-0-RELEASE, netbsd-10-0-RC6, netbsd-10-0-RC5, netbsd-10-0-RC4, netbsd-10-0-RC3, netbsd-10-0-RC2, netbsd-10-0-RC1, netbsd-10, bouyer-sunxi-drm-base, bouyer-sunxi-drm, HEAD
Diff to: previous 1.25: preferred, colored
Changes since revision 1.25: +2 -2 lines
Move attributes to the front of the __do_atomic_store declarations
(to make it compatible with c++ and other more nitpicky compiker invocations).
Should fix the build for sparc.

Revision 1.25: download - view: text, markup, annotated - select for diffs
Sat Jul 30 14:13:27 2022 UTC (2 years, 4 months ago) by riastradh
Branches: MAIN
Diff to: previous 1.24: preferred, colored
Changes since revision 1.24: +51 -1 lines
sys/atomic.h: Fix atomic_store_* on sparcv7, sparcv8.

These did not cooperate with the hash-locked scheme of the other
atomic operations, with the effect that, for instance, a typical
naive spin lock based on atomic_*,

volatile unsigned locked = 0;
lock()
{
	while (atomic_swap_uint(&locked, 1))
		continue;
	membar_acquire();
}
unlock()
{
	membar_release();
	atomic_store_relaxed(&locked, 0);
}

would fail to achieve mutual exclusion.

For this case, we need to use atomic_swap_* (or, for 8- or 16-bit
objects, atomic_cas_32 loops, since there is no atomic_swap_8 or
atomic_swap_16).

The new machine/types.h macro __HAVE_HASHLOCKED_ATOMICS says whether
these contortions are necessary.

Note that this _requires_ the use of atomic_store_*(p, v), not
regular stores *p = v, to work with the r/m/w atomic operations.

Revision 1.24: download - view: text, markup, annotated - select for diffs
Sat Apr 9 23:34:30 2022 UTC (2 years, 8 months ago) by riastradh
Branches: MAIN
Diff to: previous 1.23: preferred, colored
Changes since revision 1.23: +3 -9 lines
atomic_loadstore(9): Use membar_acquire/release.

Revision 1.23: download - view: text, markup, annotated - select for diffs
Sat Apr 9 23:32:53 2022 UTC (2 years, 8 months ago) by riastradh
Branches: MAIN
Diff to: previous 1.22: preferred, colored
Changes since revision 1.22: +9 -3 lines
Introduce membar_acquire/release.  Deprecate membar_enter/exit.

The names membar_enter/exit were unclear, and the documentation of
membar_enter has disagreed with the implementations on sparc,
powerpc, and even x86(!) for the entire time it has been in NetBSD.

The terms `acquire' and `release' are ubiquitous in the literature
today, and have been adopted in the C and C++ standards to mean
load-before-load/store and load/store-before-store, respectively,
which are exactly the orderings required by acquiring and releasing a
mutex, as well as other useful applications like decrementing a
reference count and then freeing the underlying object if it went to
zero.

Originally I proposed changing one word in the documentation for
membar_enter to make it load-before-load/store instead of
store-before-load/store, i.e., to make it an acquire barrier.  I
proposed this on the grounds that

(a) all implementations guarantee load-before-load/store,
(b) some implementations fail to guarantee store-before-load/store,
and
(c) all uses in-tree assume load-before-load/store.

I verified parts (a) and (b) (except, for (a), powerpc didn't even
guarantee load-before-load/store -- isync isn't necessarily enough;
need lwsync in general -- but it _almost_ did, and it certainly didn't
guarantee store-before-load/store).

Part (c) might not be correct, however: under the mistaken assumption
that atomic-r/m/w then membar-w/rw is equivalent to atomic-r/m/w then
membar-r/rw, I only audited the cases of membar_enter that _aren't_
immediately after an atomic-r/m/w.  All of those cases assume
load-before-load/store.  But my assumption was wrong -- there are
cases of atomic-r/m/w then membar-w/rw that would be broken by
changing to atomic-r/m/w then membar-r/rw:

https://mail-index.netbsd.org/tech-kern/2022/03/29/msg028044.html

Furthermore, the name membar_enter has been adopted in other places
like OpenBSD where it actually does follow the documentation and
guarantee store-before-load/store, even if that order is not useful.
So the name membar_enter currently lives in a bad place where it
means either of two things -- r/rw or w/rw.

With this change, we deprecate membar_enter/exit, introduce
membar_acquire/release as better names for the useful pair (r/rw and
rw/w), and make sure the implementation of membar_enter guarantees
both what was documented _and_ what was implemented, making it an
alias for membar_sync.

While here, rework all of the membar_* definitions and aliases.  The
new logic follows a rule to make it easier to audit:

	membar_X is defined as an alias for membar_Y iff membar_X is
	guaranteed by membar_Y.

The `no stronger than' relation is (the transitive closure of):

- membar_consumer (r/r) is guaranteed by membar_acquire (r/rw)
- membar_producer (w/w) is guaranteed by membar_release (rw/w)
- membar_acquire (r/rw) is guaranteed by membar_sync (rw/rw)
- membar_release (rw/w) is guaranteed by membar_sync (rw/rw)

And, for the deprecated membars:

- membar_enter (whether r/rw, w/rw, or rw/rw) is guaranteed by
  membar_sync (rw/rw)
- membar_exit (rw/w) is guaranteed by membar_release (rw/w)

(membar_exit is identical to membar_release, but the name is
deprecated.)

Finally, while here, annotate some of the instructions with their
semantics.  For powerpc, leave an essay with citations on the
unfortunate but -- as far as I can tell -- necessary decision to use
lwsync, not isync, for membar_acquire and membar_consumer.

Also add membar(3) and atomic(3) man page links.

Revision 1.22: download - view: text, markup, annotated - select for diffs
Sat Dec 18 16:31:40 2021 UTC (2 years, 11 months ago) by riastradh
Branches: MAIN
Diff to: previous 1.21: preferred, colored
Changes since revision 1.21: +3 -1 lines
CTASSERT requires <lib/libkern/libkern.h>.

Revision 1.13.18.1: download - view: text, markup, annotated - select for diffs
Mon Apr 13 08:05:20 2020 UTC (4 years, 7 months ago) by martin
Branches: phil-wifi
Diff to: previous 1.13: preferred, colored; next MAIN 1.14: preferred, colored
Changes since revision 1.13: +445 -101 lines
Mostly merge changes from HEAD upto 20200411

Revision 1.13.22.1: download - view: text, markup, annotated - select for diffs
Sun Dec 8 14:26:38 2019 UTC (5 years ago) by martin
Branches: netbsd-9
CVS tags: netbsd-9-4-RELEASE, netbsd-9-3-RELEASE, netbsd-9-2-RELEASE, netbsd-9-1-RELEASE, netbsd-9-0-RELEASE, netbsd-9-0-RC2
Diff to: previous 1.13: preferred, colored; next MAIN 1.14: preferred, colored
Changes since revision 1.13: +106 -1 lines
Pull up following revision(s) (requested by riastradh in ticket #508):

	distrib/sets/lists/comp/mi: revision 1.2294
	share/man/man9/Makefile: revision 1.443
	sys/sys/atomic.h: revision 1.18
	share/man/man9/atomic_loadstore.9: revision 1.1
	share/man/man9/atomic_loadstore.9: revision 1.2

New atomic load/store operations for the kernel.

Guarantee no fusing and no tearing, and can optionally impose
ordering relative to other memory operations.

Unordered:
- atomic_load_relaxed
- atomic_store_relaxed

Ordered:
- atomic_load_acquire
- atomic_load_consume
- atomic_store_release

These are intended to match C11 semantics, and can be defined in
terms of the C11 atomic API when ready.

Document relation to atomic_ops(3) and membar_ops(3).

Revision 1.21: download - view: text, markup, annotated - select for diffs
Tue Dec 3 04:57:38 2019 UTC (5 years ago) by riastradh
Branches: MAIN
CVS tags: thorpej-i2c-spi-conf2-base, thorpej-i2c-spi-conf2, thorpej-i2c-spi-conf-base, thorpej-i2c-spi-conf, thorpej-futex2-base, thorpej-futex2, thorpej-futex-base, thorpej-futex, thorpej-cfargs2-base, thorpej-cfargs2, thorpej-cfargs-base, thorpej-cfargs, phil-wifi-20200421, phil-wifi-20200411, phil-wifi-20200406, is-mlppp-base, is-mlppp, cjep_sun2x-base1, cjep_sun2x-base, cjep_sun2x, cjep_staticlib_x-base1, cjep_staticlib_x-base, cjep_staticlib_x, bouyer-xenpvh-base2, bouyer-xenpvh-base1, bouyer-xenpvh-base, bouyer-xenpvh, ad-namecache-base3, ad-namecache-base2, ad-namecache-base1, ad-namecache-base, ad-namecache
Diff to: previous 1.20: preferred, colored
Changes since revision 1.20: +2 -3 lines
Fix brain fart in alignment criterion.

Revision 1.20: download - view: text, markup, annotated - select for diffs
Sun Dec 1 15:28:02 2019 UTC (5 years ago) by riastradh
Branches: MAIN
Diff to: previous 1.19: preferred, colored
Changes since revision 1.19: +16 -14 lines
Rework modified atomic_load/store_* to work on const pointers.

Revision 1.19: download - view: text, markup, annotated - select for diffs
Sun Dec 1 08:15:58 2019 UTC (5 years ago) by maxv
Branches: MAIN
Diff to: previous 1.18: preferred, colored
Changes since revision 1.18: +25 -6 lines
Add KCSAN instrumentation for atomic_{load,store}_*.

Revision 1.18: download - view: text, markup, annotated - select for diffs
Fri Nov 29 22:17:23 2019 UTC (5 years ago) by riastradh
Branches: MAIN
Diff to: previous 1.17: preferred, colored
Changes since revision 1.17: +106 -1 lines
New atomic load/store operations for the kernel.

Guarantee no fusing and no tearing, and can optionally impose
ordering relative to other memory operations.

Unordered:
- atomic_load_relaxed
- atomic_store_relaxed

Ordered:
- atomic_load_acquire
- atomic_load_consume
- atomic_store_release

These are intended to match C11 semantics, and can be defined in
terms of the C11 atomic API when ready.

Revision 1.17: download - view: text, markup, annotated - select for diffs
Thu Nov 14 16:23:53 2019 UTC (5 years ago) by maxv
Branches: MAIN
CVS tags: phil-wifi-20191119
Diff to: previous 1.16: preferred, colored
Changes since revision 1.16: +85 -1 lines
Add support for Kernel Memory Sanitizer (kMSan). It detects uninitialized
memory used by the kernel at run time, and just like kASan and kCSan, it
is an excellent feature. It has already detected 38 uninitialized variables
in the kernel during my testing, which I have since discreetly fixed.

We use two shadows:
 - "shad", to track uninitialized memory with a bit granularity (1:1).
   Each bit set to 1 in the shad corresponds to one uninitialized bit of
   real kernel memory.
 - "orig", to track the origin of the memory with a 4-byte granularity
   (1:1). Each uint32_t cell in the orig indicates the origin of the
   associated uint32_t of real kernel memory.

The memory consumption of these shadows is consequent, so at least 4GB of
RAM is recommended to run kMSan.

The compiler inserts calls to specific __msan_* functions on each memory
access, to manage both the shad and the orig and detect uninitialized
memory accesses that change the execution flow (like an "if" on an
uninitialized variable).

We mark as uninit several types of memory buffers (stack, pools, kmem,
malloc, uvm_km), and check each buffer passed to copyout, copyoutstr,
bwrite, if_transmit_lock and DMA operations, to detect uninitialized memory
that leaves the system. This allows us to detect kernel info leaks in a way
that is more efficient and also more user-friendly than KLEAK.

Contrary to kASan, kMSan requires comprehensive coverage, ie we cannot
tolerate having one non-instrumented function, because this could cause
false positives. kMSan cannot instrument ASM functions, so I converted
most of them to __asm__ inlines, which kMSan is able to instrument. Those
that remain receive special treatment.

Contrary to kASan again, kMSan uses a TLS, so we must context-switch this
TLS during interrupts. We use different contexts depending on the interrupt
level.

The orig tracks precisely the origin of a buffer. We use a special encoding
for the orig values, and pack together in each uint32_t cell of the orig:
 - a code designating the type of memory (Stack, Pool, etc), and
 - a compressed pointer, which points either (1) to a string containing
   the name of the variable associated with the cell, or (2) to an area
   in the kernel .text section which we resolve to a symbol name + offset.

This encoding allows us not to consume extra memory for associating
information with each cell, and produces a precise output, that can tell
for example the name of an uninitialized variable on the stack, the
function in which it was pushed on the stack, and the function where we
accessed this uninitialized variable.

kMSan is available with LLVM, but not with GCC.

The code is organized in a way that is similar to kASan and kCSan, so it
means that other architectures than amd64 can be supported.

Revision 1.16: download - view: text, markup, annotated - select for diffs
Tue Nov 5 20:19:18 2019 UTC (5 years, 1 month ago) by maxv
Branches: MAIN
Diff to: previous 1.15: preferred, colored
Changes since revision 1.15: +85 -1 lines
Add Kernel Concurrency Sanitizer (kCSan) support. This sanitizer allows us
to detect race conditions at runtime. It is a variation of TSan that is
easy to implement and more suited to kernel internals, albeit theoretically
less precise than TSan's happens-before.

We do basically two things:

 - On every KCSAN_NACCESSES (=2000) memory accesses, we create a cell
   describing the access, and delay the calling CPU (10ms).

 - On all memory accesses, we verify if the memory we're reading/writing
   is referenced in a cell already.

The combination of the two means that, if for example cpu0 does a read that
is selected and cpu1 does a write at the same address, kCSan will fire,
because cpu1's write collides with cpu0's read cell.

The coverage of the instrumentation is the same as that of kASan. Also, the
code is organized in a way similar to kASan, so it is easy to add support
for more architectures than amd64. kCSan is compatible with KCOV.

Reviewed by Kamil.

Revision 1.15: download - view: text, markup, annotated - select for diffs
Wed Sep 11 14:56:25 2019 UTC (5 years, 3 months ago) by christos
Branches: MAIN
Diff to: previous 1.14: preferred, colored
Changes since revision 1.14: +19 -19 lines
Be consistent about semicolons in macros: always put them in the macro
definitions and in the macro invocations so that the invocations look
like statements, and we don't and up with extra semis. Fixes lint build.

Revision 1.14: download - view: text, markup, annotated - select for diffs
Thu Sep 5 16:19:16 2019 UTC (5 years, 3 months ago) by maxv
Branches: MAIN
Diff to: previous 1.13: preferred, colored
Changes since revision 1.13: +152 -101 lines
Add KASAN instrumentation on the atomic functions. Use macros to simplify.
These macros are prerequisites for future changes.

Revision 1.11.22.2: download - view: text, markup, annotated - select for diffs
Sun Dec 3 11:39:20 2017 UTC (7 years ago) by jdolecek
Branches: tls-maxphys
Diff to: previous 1.11.22.1: preferred, colored; branchpoint 1.11: preferred, colored; next MAIN 1.12: preferred, colored
Changes since revision 1.11.22.1: +6 -0 lines
update from HEAD

Revision 1.12.6.1: download - view: text, markup, annotated - select for diffs
Mon Apr 6 15:18:32 2015 UTC (9 years, 8 months ago) by skrll
Branches: nick-nhusb
Diff to: previous 1.12: preferred, colored; next MAIN 1.13: preferred, colored
Changes since revision 1.12: +7 -1 lines
Sync with HEAD

Revision 1.12.4.1: download - view: text, markup, annotated - select for diffs
Wed Mar 18 07:47:28 2015 UTC (9 years, 8 months ago) by snj
Branches: netbsd-7
CVS tags: netbsd-7-nhusb-base-20170116, netbsd-7-nhusb-base, netbsd-7-nhusb, netbsd-7-2-RELEASE, netbsd-7-1-RELEASE, netbsd-7-1-RC2, netbsd-7-1-RC1, netbsd-7-1-2-RELEASE, netbsd-7-1-1-RELEASE, netbsd-7-1, netbsd-7-0-RELEASE, netbsd-7-0-RC3, netbsd-7-0-RC2, netbsd-7-0-RC1, netbsd-7-0-2-RELEASE, netbsd-7-0-1-RELEASE, netbsd-7-0
Diff to: previous 1.12: preferred, colored; next MAIN 1.13: preferred, colored
Changes since revision 1.12: +7 -1 lines
Pull up following revision(s) (requested by riastradh in ticket #600):
	common/lib/libc/arch/alpha/atomic/membar_ops.S: revision 1.7
	lib/libc/atomic/membar_ops.3: revision 1.4
	sys/arch/alpha/include/types.h: revision 1.50
	sys/sys/atomic.h: revision 1.13
Introduce membar_datadep_consumer.
Discussed briefly on tech-kern without objection:
https://mail-index.netbsd.org/tech-kern/2014/11/20/msg018054.html
https://mail-index.netbsd.org/tech-kern/2015/01/07/msg018326.html

Revision 1.13: download - view: text, markup, annotated - select for diffs
Thu Jan 8 22:27:18 2015 UTC (9 years, 11 months ago) by riastradh
Branches: MAIN
CVS tags: tls-maxphys-base-20171202, prg-localcount2-base3, prg-localcount2-base2, prg-localcount2-base1, prg-localcount2-base, prg-localcount2, phil-wifi-base, phil-wifi-20190609, pgoyette-localcount-base, pgoyette-localcount-20170426, pgoyette-localcount-20170320, pgoyette-localcount-20170107, pgoyette-localcount-20161104, pgoyette-localcount-20160806, pgoyette-localcount-20160726, pgoyette-localcount, pgoyette-compat-merge-20190127, pgoyette-compat-base, pgoyette-compat-20190127, pgoyette-compat-20190118, pgoyette-compat-1226, pgoyette-compat-1126, pgoyette-compat-1020, pgoyette-compat-0930, pgoyette-compat-0906, pgoyette-compat-0728, pgoyette-compat-0625, pgoyette-compat-0521, pgoyette-compat-0502, pgoyette-compat-0422, pgoyette-compat-0415, pgoyette-compat-0407, pgoyette-compat-0330, pgoyette-compat-0322, pgoyette-compat-0315, pgoyette-compat, perseant-stdc-iso10646-base, perseant-stdc-iso10646, nick-nhusb-base-20170825, nick-nhusb-base-20170204, nick-nhusb-base-20161204, nick-nhusb-base-20161004, nick-nhusb-base-20160907, nick-nhusb-base-20160529, nick-nhusb-base-20160422, nick-nhusb-base-20160319, nick-nhusb-base-20151226, nick-nhusb-base-20150921, nick-nhusb-base-20150606, nick-nhusb-base-20150406, netbsd-9-base, netbsd-9-0-RC1, netbsd-8-base, netbsd-8-3-RELEASE, netbsd-8-2-RELEASE, netbsd-8-1-RELEASE, netbsd-8-1-RC1, netbsd-8-0-RELEASE, netbsd-8-0-RC2, netbsd-8-0-RC1, netbsd-8, matt-nb8-mediatek-base, matt-nb8-mediatek, localcount-20160914, jdolecek-ncq-base, jdolecek-ncq, isaki-audio2-base, isaki-audio2, bouyer-socketcan-base1, bouyer-socketcan-base, bouyer-socketcan
Branch point for: phil-wifi, netbsd-9
Diff to: previous 1.12: preferred, colored
Changes since revision 1.12: +7 -1 lines
Introduce membar_datadep_consumer.

Discussed briefly on tech-kern without objection:

https://mail-index.netbsd.org/tech-kern/2014/11/20/msg018054.html
https://mail-index.netbsd.org/tech-kern/2015/01/07/msg018326.html

Revision 1.11.22.1: download - view: text, markup, annotated - select for diffs
Wed Aug 20 00:04:44 2014 UTC (10 years, 3 months ago) by tls
Branches: tls-maxphys
Diff to: previous 1.11: preferred, colored
Changes since revision 1.11: +8 -1 lines
Rebase to HEAD as of a few days ago.

Revision 1.11.12.1: download - view: text, markup, annotated - select for diffs
Thu May 22 11:41:18 2014 UTC (10 years, 6 months ago) by yamt
Branches: yamt-pagecache
Diff to: previous 1.11: preferred, colored; next MAIN 1.12: preferred, colored
Changes since revision 1.11: +8 -1 lines
sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs.  ("Protocol error: too many arguments")

Revision 1.11.26.1: download - view: text, markup, annotated - select for diffs
Sun May 18 17:46:21 2014 UTC (10 years, 6 months ago) by rmind
Branches: rmind-smpnet
Diff to: previous 1.11: preferred, colored; next MAIN 1.12: preferred, colored
Changes since revision 1.11: +8 -1 lines
sync with head

Revision 1.12: download - view: text, markup, annotated - select for diffs
Fri Feb 21 15:52:53 2014 UTC (10 years, 9 months ago) by martin
Branches: MAIN
CVS tags: yamt-pagecache-base9, tls-maxphys-base, tls-earlyentropy-base, tls-earlyentropy, rmind-smpnet-nbase, rmind-smpnet-base, riastradh-xf86-video-intel-2-7-1-pre-2-21-15, riastradh-drm2-base3, nick-nhusb-base, netbsd-7-base
Branch point for: nick-nhusb, netbsd-7
Diff to: previous 1.11: preferred, colored
Changes since revision 1.11: +8 -1 lines
Declare 16 and 8 bit atomic CAS - while it is not usually sane to expect
these functions to work in MI code, we need them to provide some of the
__sync_* functions gcc and other compilers expect nowadays on some
architectures.

Revision 1.10.18.1: download - view: text, markup, annotated - select for diffs
Wed Apr 21 00:28:24 2010 UTC (14 years, 7 months ago) by matt
Branches: matt-nb5-mips64
CVS tags: matt-nb5-mips64-premerge-20101231, matt-nb5-mips64-k15
Diff to: previous 1.10: preferred, colored; next MAIN 1.11: preferred, colored
Changes since revision 1.10: +4 -1 lines
sync to netbsd-5

Revision 1.9.10.2: download - view: text, markup, annotated - select for diffs
Thu Mar 11 15:04:41 2010 UTC (14 years, 9 months ago) by yamt
Branches: yamt-nfs-mp
Diff to: previous 1.9.10.1: preferred, colored; branchpoint 1.9: preferred, colored; next MAIN 1.10: preferred, colored
Changes since revision 1.9.10.1: +4 -1 lines
sync with head

Revision 1.10.10.1: download - view: text, markup, annotated - select for diffs
Tue Mar 2 06:21:12 2010 UTC (14 years, 9 months ago) by snj
Branches: netbsd-5
CVS tags: netbsd-5-2-RELEASE, netbsd-5-2-RC1, netbsd-5-2-3-RELEASE, netbsd-5-2-2-RELEASE, netbsd-5-2-1-RELEASE, netbsd-5-2, netbsd-5-1-RELEASE, netbsd-5-1-RC4, netbsd-5-1-RC3, netbsd-5-1-RC2, netbsd-5-1-RC1, netbsd-5-1-5-RELEASE, netbsd-5-1-4-RELEASE, netbsd-5-1-3-RELEASE, netbsd-5-1-2-RELEASE, netbsd-5-1-1-RELEASE, netbsd-5-1, matt-nb5-pq3-base, matt-nb5-pq3
Diff to: previous 1.10: preferred, colored; next MAIN 1.11: preferred, colored
Changes since revision 1.10: +4 -1 lines
Pull up following revision(s) (requested by dholland in ticket #1314):
	sys/sys/atomic.h: revision 1.11
make atomics usable from c++!

Revision 1.11: download - view: text, markup, annotated - select for diffs
Fri Nov 20 02:17:07 2009 UTC (15 years ago) by christos
Branches: MAIN
CVS tags: yamt-pagecache-tag8, yamt-pagecache-base8, yamt-pagecache-base7, yamt-pagecache-base6, yamt-pagecache-base5, yamt-pagecache-base4, yamt-pagecache-base3, yamt-pagecache-base2, yamt-pagecache-base, yamt-nfs-mp-base9, yamt-nfs-mp-base11, yamt-nfs-mp-base10, uebayasi-xip-base7, uebayasi-xip-base6, uebayasi-xip-base5, uebayasi-xip-base4, uebayasi-xip-base3, uebayasi-xip-base2, uebayasi-xip-base1, uebayasi-xip-base, uebayasi-xip, rmind-uvmplock-nbase, rmind-uvmplock-base, rmind-uvmplock, riastradh-drm2-base2, riastradh-drm2-base1, riastradh-drm2-base, riastradh-drm2, netbsd-6-base, netbsd-6-1-RELEASE, netbsd-6-1-RC4, netbsd-6-1-RC3, netbsd-6-1-RC2, netbsd-6-1-RC1, netbsd-6-1-5-RELEASE, netbsd-6-1-4-RELEASE, netbsd-6-1-3-RELEASE, netbsd-6-1-2-RELEASE, netbsd-6-1-1-RELEASE, netbsd-6-1, netbsd-6-0-RELEASE, netbsd-6-0-RC2, netbsd-6-0-RC1, netbsd-6-0-6-RELEASE, netbsd-6-0-5-RELEASE, netbsd-6-0-4-RELEASE, netbsd-6-0-3-RELEASE, netbsd-6-0-2-RELEASE, netbsd-6-0-1-RELEASE, netbsd-6-0, netbsd-6, matt-premerge-20091211, matt-nb6-plus-nbase, matt-nb6-plus-base, matt-nb6-plus, matt-mips64-premerge-20101231, khorben-n900, jruoho-x86intr-base, jruoho-x86intr, jmcneill-usbmp-pre-base2, jmcneill-usbmp-base9, jmcneill-usbmp-base8, jmcneill-usbmp-base7, jmcneill-usbmp-base6, jmcneill-usbmp-base5, jmcneill-usbmp-base4, jmcneill-usbmp-base3, jmcneill-usbmp-base2, jmcneill-usbmp-base10, jmcneill-usbmp-base, jmcneill-usbmp, jmcneill-audiomp3-base, jmcneill-audiomp3, cherry-xenmp-base, cherry-xenmp, bouyer-quota2-nbase, bouyer-quota2-base, bouyer-quota2, agc-symver-base, agc-symver
Branch point for: yamt-pagecache, tls-maxphys, rmind-smpnet
Diff to: previous 1.10: preferred, colored
Changes since revision 1.10: +4 -1 lines
make atomics usable from c++!

Revision 1.9.6.1: download - view: text, markup, annotated - select for diffs
Mon Jun 2 13:24:31 2008 UTC (16 years, 6 months ago) by mjf
Branches: mjf-devfs2
Diff to: previous 1.9: preferred, colored; next MAIN 1.10: preferred, colored
Changes since revision 1.9: +1 -8 lines
Sync with HEAD.

Revision 1.9.8.1: download - view: text, markup, annotated - select for diffs
Sun May 18 12:35:49 2008 UTC (16 years, 6 months ago) by yamt
Branches: yamt-pf42
Diff to: previous 1.9: preferred, colored; next MAIN 1.10: preferred, colored
Changes since revision 1.9: +1 -8 lines
sync with head.

Revision 1.9.10.1: download - view: text, markup, annotated - select for diffs
Fri May 16 02:25:50 2008 UTC (16 years, 6 months ago) by yamt
Branches: yamt-nfs-mp
Diff to: previous 1.9: preferred, colored
Changes since revision 1.9: +1 -8 lines
sync with head.

Revision 1.10: download - view: text, markup, annotated - select for diffs
Mon Apr 28 20:24:10 2008 UTC (16 years, 7 months ago) by martin
Branches: MAIN
CVS tags: yamt-pf42-base4, yamt-pf42-base3, yamt-pf42-base2, yamt-nfs-mp-base8, yamt-nfs-mp-base7, yamt-nfs-mp-base6, yamt-nfs-mp-base5, yamt-nfs-mp-base4, yamt-nfs-mp-base3, yamt-nfs-mp-base2, wrstuden-revivesa-base-4, wrstuden-revivesa-base-3, wrstuden-revivesa-base-2, wrstuden-revivesa-base-1, wrstuden-revivesa-base, wrstuden-revivesa, simonb-wapbl-nbase, simonb-wapbl-base, simonb-wapbl, nick-hppapmap-base4, nick-hppapmap-base3, nick-hppapmap-base2, nick-hppapmap-base, nick-hppapmap, netbsd-5-base, netbsd-5-0-RELEASE, netbsd-5-0-RC4, netbsd-5-0-RC3, netbsd-5-0-RC2, netbsd-5-0-RC1, netbsd-5-0-2-RELEASE, netbsd-5-0-1-RELEASE, netbsd-5-0, mjf-devfs2-base, matt-nb5-mips64-u2-k2-k4-k7-k8-k9, matt-nb5-mips64-u1-k1-k5, matt-nb5-mips64-premerge-20091211, matt-nb4-mips64-k7-u2a-k9b, matt-mips64-base2, jymxensuspend-base, jym-xensuspend-nbase, jym-xensuspend-base, jym-xensuspend, hpcarm-cleanup-nbase, haad-nbase2, haad-dm-base2, haad-dm-base1, haad-dm-base, haad-dm, ad-audiomp2-base, ad-audiomp2
Branch point for: netbsd-5, matt-nb5-mips64
Diff to: previous 1.9: preferred, colored
Changes since revision 1.9: +1 -8 lines
Remove clause 3 and 4 from TNF licenses

Revision 1.6.12.3: download - view: text, markup, annotated - select for diffs
Sun Mar 23 02:05:10 2008 UTC (16 years, 8 months ago) by matt
Branches: matt-armv6
Diff to: previous 1.6.12.2: preferred, colored; branchpoint 1.6: preferred, colored; next MAIN 1.7: preferred, colored
Changes since revision 1.6.12.2: +14 -3 lines
sync with HEAD

Revision 1.6.4.5: download - view: text, markup, annotated - select for diffs
Wed Feb 27 08:37:05 2008 UTC (16 years, 9 months ago) by yamt
Branches: yamt-lazymbuf
Diff to: previous 1.6.4.4: preferred, colored; branchpoint 1.6: preferred, colored; next MAIN 1.7: preferred, colored
Changes since revision 1.6.4.4: +3 -3 lines
sync with head.

Revision 1.1.12.3: download - view: text, markup, annotated - select for diffs
Mon Feb 18 21:07:23 2008 UTC (16 years, 9 months ago) by mjf
Branches: mjf-devfs
Diff to: previous 1.1.12.2: preferred, colored; branchpoint 1.1: preferred, colored; next MAIN 1.2: preferred, colored
Changes since revision 1.1.12.2: +14 -3 lines
Sync with HEAD.

Revision 1.9: download - view: text, markup, annotated - select for diffs
Mon Feb 11 15:20:41 2008 UTC (16 years, 10 months ago) by ad
Branches: MAIN
CVS tags: yamt-pf42-baseX, yamt-pf42-base, yamt-nfs-mp-base, yamt-lazymbuf-base15, yamt-lazymbuf-base14, nick-net80211-sync-base, nick-net80211-sync, mjf-devfs-base, matt-armv6-nbase, keiichi-mipv6-nbase, keiichi-mipv6-base, keiichi-mipv6, hpcarm-cleanup-base, ad-socklock-base1
Branch point for: yamt-pf42, yamt-nfs-mp, mjf-devfs2
Diff to: previous 1.8: preferred, colored
Changes since revision 1.8: +3 -3 lines
Correct a comment.

Revision 1.6.4.4: download - view: text, markup, annotated - select for diffs
Mon Feb 11 15:00:09 2008 UTC (16 years, 10 months ago) by yamt
Branches: yamt-lazymbuf
Diff to: previous 1.6.4.3: preferred, colored; branchpoint 1.6: preferred, colored
Changes since revision 1.6.4.3: +12 -1 lines
sync with head.

Revision 1.8: download - view: text, markup, annotated - select for diffs
Sun Feb 10 13:24:48 2008 UTC (16 years, 10 months ago) by ad
Branches: MAIN
Diff to: previous 1.7: preferred, colored
Changes since revision 1.7: +12 -1 lines
Add prototypes for atomic_cas_foo_ni().

Revision 1.6.4.3: download - view: text, markup, annotated - select for diffs
Mon Jan 21 09:47:46 2008 UTC (16 years, 10 months ago) by yamt
Branches: yamt-lazymbuf
Diff to: previous 1.6.4.2: preferred, colored; branchpoint 1.6: preferred, colored
Changes since revision 1.6.4.2: +2 -2 lines
sync with head

Revision 1.6.8.1: download - view: text, markup, annotated - select for diffs
Sat Jan 19 12:15:40 2008 UTC (16 years, 10 months ago) by bouyer
Branches: bouyer-xeni386
Diff to: previous 1.6: preferred, colored; next MAIN 1.7: preferred, colored
Changes since revision 1.6: +2 -2 lines
Sync with HEAD

Revision 1.7: download - view: text, markup, annotated - select for diffs
Fri Jan 18 01:20:48 2008 UTC (16 years, 10 months ago) by simonb
Branches: MAIN
CVS tags: bouyer-xeni386-nbase, bouyer-xeni386-base
Diff to: previous 1.6: preferred, colored
Changes since revision 1.6: +2 -2 lines
Standalone programs (via libkern) end up pulling this header in, so
check for !_STANDALONE as well before trying to include <stdint.h>

Revision 1.6.12.2: download - view: text, markup, annotated - select for diffs
Wed Jan 9 01:58:05 2008 UTC (16 years, 11 months ago) by matt
Branches: matt-armv6
Diff to: previous 1.6.12.1: preferred, colored; branchpoint 1.6: preferred, colored
Changes since revision 1.6.12.1: +147 -0 lines
sync with HEAD

Revision 1.1.12.2: download - view: text, markup, annotated - select for diffs
Sat Dec 8 18:21:29 2007 UTC (17 years ago) by mjf
Branches: mjf-devfs
Diff to: previous 1.1.12.1: preferred, colored; branchpoint 1.1: preferred, colored
Changes since revision 1.1.12.1: +1 -77 lines
Sync with HEAD.

Revision 1.6.4.2: download - view: text, markup, annotated - select for diffs
Fri Dec 7 17:34:52 2007 UTC (17 years ago) by yamt
Branches: yamt-lazymbuf
Diff to: previous 1.6.4.1: preferred, colored; branchpoint 1.6: preferred, colored
Changes since revision 1.6.4.1: +147 -0 lines
sync with head

Revision 1.1.6.2: download - view: text, markup, annotated - select for diffs
Mon Dec 3 16:15:15 2007 UTC (17 years ago) by joerg
Branches: jmcneill-pm
Diff to: previous 1.1.6.1: preferred, colored; branchpoint 1.1: preferred, colored; next MAIN 1.2: preferred, colored
Changes since revision 1.1.6.1: +1 -77 lines
Sync with HEAD.

Revision 1.6.12.1
Fri Nov 30 17:13:10 2007 UTC (17 years ago) by matt
Branches: matt-armv6
FILE REMOVED
Changes since revision 1.6: +0 -147 lines
file atomic.h was added on branch matt-armv6 on 2008-01-09 01:58:05 +0000

Revision 1.6.4.1
Fri Nov 30 17:13:10 2007 UTC (17 years ago) by yamt
Branches: yamt-lazymbuf
FILE REMOVED
Changes since revision 1.6: +0 -147 lines
file atomic.h was added on branch yamt-lazymbuf on 2007-12-07 17:34:52 +0000

Revision 1.6: download - view: text, markup, annotated - select for diffs
Fri Nov 30 17:13:10 2007 UTC (17 years ago) by ad
Branches: MAIN
CVS tags: yamt-kmem-base3, yamt-kmem-base2, yamt-kmem-base, yamt-kmem, vmlocking2-base3, vmlocking2-base2, vmlocking2-base1, vmlocking2, vmlocking-nbase, reinoud-bufcleanup-nbase, reinoud-bufcleanup-base, matt-armv6-base, jmcneill-pm-base, cube-autoconf-base, cube-autoconf, bouyer-xeni386-merge1
Branch point for: yamt-lazymbuf, matt-armv6, bouyer-xeni386
Diff to: previous 1.5: preferred, colored
Changes since revision 1.5: +2 -2 lines
Fix another proto.

Revision 1.5: download - view: text, markup, annotated - select for diffs
Fri Nov 30 17:12:28 2007 UTC (17 years ago) by ad
Branches: MAIN
Diff to: previous 1.4: preferred, colored
Changes since revision 1.4: +7 -7 lines
Fix atomic_inc protos again.

Revision 1.4: download - view: text, markup, annotated - select for diffs
Fri Nov 30 01:32:09 2007 UTC (17 years ago) by ad
Branches: MAIN
Diff to: previous 1.3: preferred, colored
Changes since revision 1.3: +8 -8 lines
atomic_add_* works on signed integers.

Revision 1.3: download - view: text, markup, annotated - select for diffs
Wed Nov 28 01:30:06 2007 UTC (17 years ago) by ad
Branches: MAIN
Diff to: previous 1.2: preferred, colored
Changes since revision 1.2: +1 -77 lines
Remove the sub-word atomic ops because they can not be implemented correctly
on some architectures and so are misleading. The same effect can be had by
building on top of the 32-bit CAS. As a side effect this makes it somewhat
easier to complete and document the operations across all platforms.

Revision 1.1.6.1: download - view: text, markup, annotated - select for diffs
Wed Nov 21 21:56:15 2007 UTC (17 years ago) by joerg
Branches: jmcneill-pm
Diff to: previous 1.1: preferred, colored
Changes since revision 1.1: +223 -0 lines
Sync with HEAD.

Revision 1.1.12.1: download - view: text, markup, annotated - select for diffs
Mon Nov 19 00:49:26 2007 UTC (17 years ago) by mjf
Branches: mjf-devfs
Diff to: previous 1.1: preferred, colored
Changes since revision 1.1: +223 -0 lines
Sync with HEAD.

Revision 1.1.10.1: download - view: text, markup, annotated - select for diffs
Sun Nov 18 19:35:56 2007 UTC (17 years ago) by bouyer
Branches: bouyer-xenamd64
Diff to: previous 1.1: preferred, colored; next MAIN 1.2: preferred, colored
Changes since revision 1.1: +223 -0 lines
Sync with HEAD

Revision 1.2: download - view: text, markup, annotated - select for diffs
Sun Nov 18 18:08:35 2007 UTC (17 years ago) by ad
Branches: MAIN
CVS tags: bouyer-xenamd64-base2, bouyer-xenamd64-base
Diff to: previous 1.1: preferred, colored
Changes since revision 1.1: +223 -0 lines
Pull in atomic.h from the thorpej-atomic branch.

Revision 1.1.2.2: download - view: text, markup, annotated - select for diffs
Fri Apr 13 04:09:43 2007 UTC (17 years, 8 months ago) by thorpej
Branches: thorpej-atomic
Diff to: previous 1.1.2.1: preferred, colored; branchpoint 1.1: preferred, colored; next MAIN 1.2: preferred, colored
Changes since revision 1.1.2.1: +2 -2 lines
Fix a typo.

Revision 1.1.2.1: download - view: text, markup, annotated - select for diffs
Thu Apr 12 15:15:59 2007 UTC (17 years, 8 months ago) by thorpej
Branches: thorpej-atomic
Diff to: previous 1.1: preferred, colored
Changes since revision 1.1: +223 -0 lines
Add <sys/atomic.h>, defining the API for atomic operations and memory
barriers.

Revision 1.1
Thu Apr 12 15:15:58 2007 UTC (17 years, 8 months ago) by thorpej
Branches: MAIN
CVS tags: yamt-x86pmap-base4, yamt-x86pmap-base3, yamt-x86pmap-base2, yamt-x86pmap-base, yamt-x86pmap, yamt-idlelwp-base8, vmlocking-base, mjf-ufs-trans-base, jmcneill-base, hpcarm-cleanup
Branch point for: thorpej-atomic, mjf-devfs, jmcneill-pm, bouyer-xenamd64
FILE REMOVED
file atomic.h was initially added on branch thorpej-atomic.

Diff request

This form allows you to request diffs between any two revisions of a file. You may select a symbolic revision name using the selection box or you may type in a numeric name using the type-in text box.

Log view options

CVSweb <webmaster@jp.NetBSD.org>