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


Default branch: MAIN


Revision 1.26 / (download) - annotate - [select for diffs], Sun Jul 31 11:28:46 2022 UTC (20 months, 2 weeks ago) by martin
Branch: MAIN
CVS Tags: thorpej-ifq-base, thorpej-ifq, thorpej-altq-separation-base, thorpej-altq-separation, 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
Changes since 1.25: +2 -2 lines
Diff to previous 1.25 (colored) to selected 1.9.6.1 (colored)

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) - annotate - [select for diffs], Sat Jul 30 14:13:27 2022 UTC (20 months, 2 weeks ago) by riastradh
Branch: MAIN
Changes since 1.24: +51 -1 lines
Diff to previous 1.24 (colored) to selected 1.9.6.1 (colored)

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) - annotate - [select for diffs], Sat Apr 9 23:34:30 2022 UTC (2 years ago) by riastradh
Branch: MAIN
Changes since 1.23: +3 -9 lines
Diff to previous 1.23 (colored) to selected 1.9.6.1 (colored)

atomic_loadstore(9): Use membar_acquire/release.

Revision 1.23 / (download) - annotate - [select for diffs], Sat Apr 9 23:32:53 2022 UTC (2 years ago) by riastradh
Branch: MAIN
Changes since 1.22: +9 -3 lines
Diff to previous 1.22 (colored) to selected 1.9.6.1 (colored)

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) - annotate - [select for diffs], Sat Dec 18 16:31:40 2021 UTC (2 years, 4 months ago) by riastradh
Branch: MAIN
Changes since 1.21: +3 -1 lines
Diff to previous 1.21 (colored) to selected 1.9.6.1 (colored)

CTASSERT requires <lib/libkern/libkern.h>.

Revision 1.13.18.1 / (download) - annotate - [select for diffs], Mon Apr 13 08:05:20 2020 UTC (4 years ago) by martin
Branch: phil-wifi
Changes since 1.13: +445 -101 lines
Diff to previous 1.13 (colored) next main 1.14 (colored) to selected 1.9.6.1 (colored)

Mostly merge changes from HEAD upto 20200411

Revision 1.13.22.1 / (download) - annotate - [select for diffs], Sun Dec 8 14:26:38 2019 UTC (4 years, 4 months ago) by martin
Branch: netbsd-9
CVS Tags: netbsd-9-3-RELEASE, netbsd-9-2-RELEASE, netbsd-9-1-RELEASE, netbsd-9-0-RELEASE, netbsd-9-0-RC2
Changes since 1.13: +106 -1 lines
Diff to previous 1.13 (colored) next main 1.14 (colored) to selected 1.9.6.1 (colored)

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) - annotate - [select for diffs], Tue Dec 3 04:57:38 2019 UTC (4 years, 4 months ago) by riastradh
Branch: 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
Changes since 1.20: +2 -3 lines
Diff to previous 1.20 (colored) to selected 1.9.6.1 (colored)

Fix brain fart in alignment criterion.

Revision 1.20 / (download) - annotate - [select for diffs], Sun Dec 1 15:28:02 2019 UTC (4 years, 4 months ago) by riastradh
Branch: MAIN
Changes since 1.19: +16 -14 lines
Diff to previous 1.19 (colored) to selected 1.9.6.1 (colored)

Rework modified atomic_load/store_* to work on const pointers.

Revision 1.19 / (download) - annotate - [select for diffs], Sun Dec 1 08:15:58 2019 UTC (4 years, 4 months ago) by maxv
Branch: MAIN
Changes since 1.18: +25 -6 lines
Diff to previous 1.18 (colored) to selected 1.9.6.1 (colored)

Add KCSAN instrumentation for atomic_{load,store}_*.

Revision 1.18 / (download) - annotate - [select for diffs], Fri Nov 29 22:17:23 2019 UTC (4 years, 4 months ago) by riastradh
Branch: MAIN
Changes since 1.17: +106 -1 lines
Diff to previous 1.17 (colored) to selected 1.9.6.1 (colored)

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) - annotate - [select for diffs], Thu Nov 14 16:23:53 2019 UTC (4 years, 5 months ago) by maxv
Branch: MAIN
CVS Tags: phil-wifi-20191119
Changes since 1.16: +85 -1 lines
Diff to previous 1.16 (colored) to selected 1.9.6.1 (colored)

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) - annotate - [select for diffs], Tue Nov 5 20:19:18 2019 UTC (4 years, 5 months ago) by maxv
Branch: MAIN
Changes since 1.15: +85 -1 lines
Diff to previous 1.15 (colored) to selected 1.9.6.1 (colored)

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) - annotate - [select for diffs], Wed Sep 11 14:56:25 2019 UTC (4 years, 7 months ago) by christos
Branch: MAIN
Changes since 1.14: +19 -19 lines
Diff to previous 1.14 (colored) to selected 1.9.6.1 (colored)

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) - annotate - [select for diffs], Thu Sep 5 16:19:16 2019 UTC (4 years, 7 months ago) by maxv
Branch: MAIN
Changes since 1.13: +152 -101 lines
Diff to previous 1.13 (colored) to selected 1.9.6.1 (colored)

Add KASAN instrumentation on the atomic functions. Use macros to simplify.
These macros are prerequisites for future changes.

Revision 1.11.22.2 / (download) - annotate - [select for diffs], Sun Dec 3 11:39:20 2017 UTC (6 years, 4 months ago) by jdolecek
Branch: tls-maxphys
Changes since 1.11.22.1: +6 -0 lines
Diff to previous 1.11.22.1 (colored) to branchpoint 1.11 (colored) next main 1.12 (colored) to selected 1.9.6.1 (colored)

update from HEAD

Revision 1.12.6.1 / (download) - annotate - [select for diffs], Mon Apr 6 15:18:32 2015 UTC (9 years ago) by skrll
Branch: nick-nhusb
Changes since 1.12: +7 -1 lines
Diff to previous 1.12 (colored) next main 1.13 (colored) to selected 1.9.6.1 (colored)

Sync with HEAD

Revision 1.12.4.1 / (download) - annotate - [select for diffs], Wed Mar 18 07:47:28 2015 UTC (9 years, 1 month ago) by snj
Branch: 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
Changes since 1.12: +7 -1 lines
Diff to previous 1.12 (colored) next main 1.13 (colored) to selected 1.9.6.1 (colored)

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) - annotate - [select for diffs], Thu Jan 8 22:27:18 2015 UTC (9 years, 3 months ago) by riastradh
Branch: 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-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
Changes since 1.12: +7 -1 lines
Diff to previous 1.12 (colored) to selected 1.9.6.1 (colored)

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) - annotate - [select for diffs], Wed Aug 20 00:04:44 2014 UTC (9 years, 8 months ago) by tls
Branch: tls-maxphys
Changes since 1.11: +8 -1 lines
Diff to previous 1.11 (colored) to selected 1.9.6.1 (colored)

Rebase to HEAD as of a few days ago.

Revision 1.11.12.1 / (download) - annotate - [select for diffs], Thu May 22 11:41:18 2014 UTC (9 years, 11 months ago) by yamt
Branch: yamt-pagecache
Changes since 1.11: +8 -1 lines
Diff to previous 1.11 (colored) next main 1.12 (colored) to selected 1.9.6.1 (colored)

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) - annotate - [select for diffs], Sun May 18 17:46:21 2014 UTC (9 years, 11 months ago) by rmind
Branch: rmind-smpnet
Changes since 1.11: +8 -1 lines
Diff to previous 1.11 (colored) next main 1.12 (colored) to selected 1.9.6.1 (colored)

sync with head

Revision 1.12 / (download) - annotate - [select for diffs], Fri Feb 21 15:52:53 2014 UTC (10 years, 1 month ago) by martin
Branch: 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
Changes since 1.11: +8 -1 lines
Diff to previous 1.11 (colored) to selected 1.9.6.1 (colored)

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) - annotate - [select for diffs], Wed Apr 21 00:28:24 2010 UTC (14 years ago) by matt
Branch: matt-nb5-mips64
CVS Tags: matt-nb5-mips64-premerge-20101231, matt-nb5-mips64-k15
Changes since 1.10: +4 -1 lines
Diff to previous 1.10 (colored) next main 1.11 (colored) to selected 1.9.6.1 (colored)

sync to netbsd-5

Revision 1.9.10.2 / (download) - annotate - [select for diffs], Thu Mar 11 15:04:41 2010 UTC (14 years, 1 month ago) by yamt
Branch: yamt-nfs-mp
Changes since 1.9.10.1: +4 -1 lines
Diff to previous 1.9.10.1 (colored) to branchpoint 1.9 (colored) next main 1.10 (colored) to selected 1.9.6.1 (colored)

sync with head

Revision 1.10.10.1 / (download) - annotate - [select for diffs], Tue Mar 2 06:21:12 2010 UTC (14 years, 1 month ago) by snj
Branch: 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
Changes since 1.10: +4 -1 lines
Diff to previous 1.10 (colored) next main 1.11 (colored) to selected 1.9.6.1 (colored)

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) - annotate - [select for diffs], Fri Nov 20 02:17:07 2009 UTC (14 years, 5 months ago) by christos
Branch: 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
Changes since 1.10: +4 -1 lines
Diff to previous 1.10 (colored) to selected 1.9.6.1 (colored)

make atomics usable from c++!

Revision 1.9.6.1 / (download) - annotate - [selected], Mon Jun 2 13:24:31 2008 UTC (15 years, 10 months ago) by mjf
Branch: mjf-devfs2
Changes since 1.9: +1 -8 lines
Diff to previous 1.9 (colored) next main 1.10 (colored)

Sync with HEAD.

Revision 1.9.8.1 / (download) - annotate - [select for diffs], Sun May 18 12:35:49 2008 UTC (15 years, 11 months ago) by yamt
Branch: yamt-pf42
Changes since 1.9: +1 -8 lines
Diff to previous 1.9 (colored) next main 1.10 (colored) to selected 1.9.6.1 (colored)

sync with head.

Revision 1.9.10.1 / (download) - annotate - [select for diffs], Fri May 16 02:25:50 2008 UTC (15 years, 11 months ago) by yamt
Branch: yamt-nfs-mp
Changes since 1.9: +1 -8 lines
Diff to previous 1.9 (colored) to selected 1.9.6.1 (colored)

sync with head.

Revision 1.10 / (download) - annotate - [select for diffs], Mon Apr 28 20:24:10 2008 UTC (15 years, 11 months ago) by martin
Branch: 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
Changes since 1.9: +1 -8 lines
Diff to previous 1.9 (colored) to selected 1.9.6.1 (colored)

Remove clause 3 and 4 from TNF licenses

Revision 1.6.12.3 / (download) - annotate - [select for diffs], Sun Mar 23 02:05:10 2008 UTC (16 years, 1 month ago) by matt
Branch: matt-armv6
Changes since 1.6.12.2: +14 -3 lines
Diff to previous 1.6.12.2 (colored) to branchpoint 1.6 (colored) next main 1.7 (colored) to selected 1.9.6.1 (colored)

sync with HEAD

Revision 1.6.4.5 / (download) - annotate - [select for diffs], Wed Feb 27 08:37:05 2008 UTC (16 years, 1 month ago) by yamt
Branch: yamt-lazymbuf
Changes since 1.6.4.4: +3 -3 lines
Diff to previous 1.6.4.4 (colored) to branchpoint 1.6 (colored) next main 1.7 (colored) to selected 1.9.6.1 (colored)

sync with head.

Revision 1.1.12.3 / (download) - annotate - [select for diffs], Mon Feb 18 21:07:23 2008 UTC (16 years, 2 months ago) by mjf
Branch: mjf-devfs
Changes since 1.1.12.2: +14 -3 lines
Diff to previous 1.1.12.2 (colored) to branchpoint 1.1 (colored) next main 1.2 (colored) to selected 1.9.6.1 (colored)

Sync with HEAD.

Revision 1.9 / (download) - annotate - [select for diffs], Mon Feb 11 15:20:41 2008 UTC (16 years, 2 months ago) by ad
Branch: 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
Changes since 1.8: +3 -3 lines
Diff to previous 1.8 (colored) to selected 1.9.6.1 (colored)

Correct a comment.

Revision 1.6.4.4 / (download) - annotate - [select for diffs], Mon Feb 11 15:00:09 2008 UTC (16 years, 2 months ago) by yamt
Branch: yamt-lazymbuf
Changes since 1.6.4.3: +12 -1 lines
Diff to previous 1.6.4.3 (colored) to branchpoint 1.6 (colored) to selected 1.9.6.1 (colored)

sync with head.

Revision 1.8 / (download) - annotate - [select for diffs], Sun Feb 10 13:24:48 2008 UTC (16 years, 2 months ago) by ad
Branch: MAIN
Changes since 1.7: +12 -1 lines
Diff to previous 1.7 (colored) to selected 1.9.6.1 (colored)

Add prototypes for atomic_cas_foo_ni().

Revision 1.6.4.3 / (download) - annotate - [select for diffs], Mon Jan 21 09:47:46 2008 UTC (16 years, 3 months ago) by yamt
Branch: yamt-lazymbuf
Changes since 1.6.4.2: +2 -2 lines
Diff to previous 1.6.4.2 (colored) to branchpoint 1.6 (colored) to selected 1.9.6.1 (colored)

sync with head

Revision 1.6.8.1 / (download) - annotate - [select for diffs], Sat Jan 19 12:15:40 2008 UTC (16 years, 3 months ago) by bouyer
Branch: bouyer-xeni386
Changes since 1.6: +2 -2 lines
Diff to previous 1.6 (colored) next main 1.7 (colored) to selected 1.9.6.1 (colored)

Sync with HEAD

Revision 1.7 / (download) - annotate - [select for diffs], Fri Jan 18 01:20:48 2008 UTC (16 years, 3 months ago) by simonb
Branch: MAIN
CVS Tags: bouyer-xeni386-nbase, bouyer-xeni386-base
Changes since 1.6: +2 -2 lines
Diff to previous 1.6 (colored) to selected 1.9.6.1 (colored)

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) - annotate - [select for diffs], Wed Jan 9 01:58:05 2008 UTC (16 years, 3 months ago) by matt
Branch: matt-armv6
Changes since 1.6.12.1: +147 -0 lines
Diff to previous 1.6.12.1 (colored) to branchpoint 1.6 (colored) to selected 1.9.6.1 (colored)

sync with HEAD

Revision 1.1.12.2 / (download) - annotate - [select for diffs], Sat Dec 8 18:21:29 2007 UTC (16 years, 4 months ago) by mjf
Branch: mjf-devfs
Changes since 1.1.12.1: +1 -77 lines
Diff to previous 1.1.12.1 (colored) to branchpoint 1.1 (colored) to selected 1.9.6.1 (colored)

Sync with HEAD.

Revision 1.6.4.2 / (download) - annotate - [select for diffs], Fri Dec 7 17:34:52 2007 UTC (16 years, 4 months ago) by yamt
Branch: yamt-lazymbuf
Changes since 1.6.4.1: +147 -0 lines
Diff to previous 1.6.4.1 (colored) to branchpoint 1.6 (colored) to selected 1.9.6.1 (colored)

sync with head

Revision 1.1.6.2 / (download) - annotate - [select for diffs], Mon Dec 3 16:15:15 2007 UTC (16 years, 4 months ago) by joerg
Branch: jmcneill-pm
Changes since 1.1.6.1: +1 -77 lines
Diff to previous 1.1.6.1 (colored) to branchpoint 1.1 (colored) next main 1.2 (colored) to selected 1.9.6.1 (colored)

Sync with HEAD.

Revision 1.6.12.1, Fri Nov 30 17:13:10 2007 UTC (16 years, 4 months ago) by matt
Branch: matt-armv6
Changes since 1.6: +0 -147 lines
FILE REMOVED

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 (16 years, 4 months ago) by yamt
Branch: yamt-lazymbuf
Changes since 1.6: +0 -147 lines
FILE REMOVED

file atomic.h was added on branch yamt-lazymbuf on 2007-12-07 17:34:52 +0000

Revision 1.6 / (download) - annotate - [select for diffs], Fri Nov 30 17:13:10 2007 UTC (16 years, 4 months ago) by ad
Branch: 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
Changes since 1.5: +2 -2 lines
Diff to previous 1.5 (colored) to selected 1.9.6.1 (colored)

Fix another proto.

Revision 1.5 / (download) - annotate - [select for diffs], Fri Nov 30 17:12:28 2007 UTC (16 years, 4 months ago) by ad
Branch: MAIN
Changes since 1.4: +7 -7 lines
Diff to previous 1.4 (colored) to selected 1.9.6.1 (colored)

Fix atomic_inc protos again.

Revision 1.4 / (download) - annotate - [select for diffs], Fri Nov 30 01:32:09 2007 UTC (16 years, 4 months ago) by ad
Branch: MAIN
Changes since 1.3: +8 -8 lines
Diff to previous 1.3 (colored) to selected 1.9.6.1 (colored)

atomic_add_* works on signed integers.

Revision 1.3 / (download) - annotate - [select for diffs], Wed Nov 28 01:30:06 2007 UTC (16 years, 4 months ago) by ad
Branch: MAIN
Changes since 1.2: +1 -77 lines
Diff to previous 1.2 (colored) to selected 1.9.6.1 (colored)

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) - annotate - [select for diffs], Wed Nov 21 21:56:15 2007 UTC (16 years, 5 months ago) by joerg
Branch: jmcneill-pm
Changes since 1.1: +223 -0 lines
Diff to previous 1.1 (colored) to selected 1.9.6.1 (colored)

Sync with HEAD.

Revision 1.1.12.1 / (download) - annotate - [select for diffs], Mon Nov 19 00:49:26 2007 UTC (16 years, 5 months ago) by mjf
Branch: mjf-devfs
Changes since 1.1: +223 -0 lines
Diff to previous 1.1 (colored) to selected 1.9.6.1 (colored)

Sync with HEAD.

Revision 1.1.10.1 / (download) - annotate - [select for diffs], Sun Nov 18 19:35:56 2007 UTC (16 years, 5 months ago) by bouyer
Branch: bouyer-xenamd64
Changes since 1.1: +223 -0 lines
Diff to previous 1.1 (colored) next main 1.2 (colored) to selected 1.9.6.1 (colored)

Sync with HEAD

Revision 1.2 / (download) - annotate - [select for diffs], Sun Nov 18 18:08:35 2007 UTC (16 years, 5 months ago) by ad
Branch: MAIN
CVS Tags: bouyer-xenamd64-base2, bouyer-xenamd64-base
Changes since 1.1: +223 -0 lines
Diff to previous 1.1 (colored) to selected 1.9.6.1 (colored)

Pull in atomic.h from the thorpej-atomic branch.

Revision 1.1.2.2 / (download) - annotate - [select for diffs], Fri Apr 13 04:09:43 2007 UTC (17 years ago) by thorpej
Branch: thorpej-atomic
Changes since 1.1.2.1: +2 -2 lines
Diff to previous 1.1.2.1 (colored) to branchpoint 1.1 (colored) next main 1.2 (colored) to selected 1.9.6.1 (colored)

Fix a typo.

Revision 1.1.2.1 / (download) - annotate - [select for diffs], Thu Apr 12 15:15:59 2007 UTC (17 years ago) by thorpej
Branch: thorpej-atomic
Changes since 1.1: +223 -0 lines
Diff to previous 1.1 (colored) to selected 1.9.6.1 (colored)

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 ago) by thorpej
Branch: 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.

This form allows you to request diff's 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.




CVSweb <webmaster@jp.NetBSD.org>