Theo Schlossnagle
1c2469358e
Implement ck_pr_dec_is_zero family of functions ( #115 )
...
* Implement ck_pr_dec_is_zero family of functions
* include/ck_pr.h: add ck_pr_{dec,inc}_is_zero and implement ck_pr_{dec,inc}_zero in terms of the new functions. Convert the architecture-specific implementations of ck_pr_foo_zero for x86 and x86-64 to ck_pr_foo_is_zero.
* regressions/ck_pr/validate: add smoke tests for ck_pr_dec_{,is_}zero and ck_pr_inc_{,is_}zero
* doc: document ck_pr_inc_is_zero
7 years ago
Olivier Houchard
b19ed4c6a5
regressions/ck_pr: Cast -1 to intptr_t before casting it to void *.
7 years ago
Olivier Houchard
db5db446d2
regression/ck_pr: Add tests for ck_pr_load_ptr() and ck_pr_store_ptr().
7 years ago
Olivier Houchard
0bd946d6a0
regressions/ck_cc: Don't forget to add a Makefile.
7 years ago
Samy Al Bahra
afe01108d1
ck_cc: add a disable builtin flag for the FreeBSD kernel.
...
This primarily affects the FreeBSD kernel, where the popcount builtin
can be problematic (relies on compiler-provided libraries). See the
history of __POPCNT__ for details [1].
- A new flag, CK_MD_CC_BUILTIN_DISABLE, can be set to indicate that CK
should not rely on compiler builtins when possible.
- ck_cc_clz has been removed, it was unused.
- ck_internal_bsf has been removed, it was duplicate of ck_cc_ffs but broken,
replaced in favor of ck_cc_ffs. Previous consumers were using the bsf
instruction, eitherway.
- ck_{rhs,hs,ht} have been updated to use ck_cc_ffs*.
If FreeBSD requires the builtins for performance reasons, we will lift the
appropriate detection into ck_md (at least, bt* bs* family of functions don't
have the same problems on most targets unlike popcount).
1: https://lists.freebsd.org/pipermail/svn-src-head/2015-March/069663.html
7 years ago
Samy Al Bahra
f18ec01c16
regressions/ck_cc: basic coverage for ck_cc.
7 years ago
Samy Al Bahra
a8b9f7f411
regressions: add ck_pr_fence for basic validation of fence definitions.
7 years ago
Samy Al Bahra
3b86f1a4fd
[whitespace] regressions: Fix repeated typo in license header.
7 years ago
Riley Berton
0d1e86d18e
ck_hs: add ck_hs_next_spmc
...
Memoize the map into ck_hs_iterator_t to make iteration more safe in the face of growth or shrinkage of the map. Tests for same.
Work from Riley Berton.
7 years ago
Samy Al Bahra
362f58e6b6
regressions: update ck_epoch usage.
8 years ago
Samy Al Bahra
db4554c686
regressions: update ck_epoch usage.
8 years ago
Samy Al Bahra
ffe9cbf9ca
ck_epoch: ck_epoch_end returns true if forward progress has been made.
8 years ago
Samy Al Bahra
8391338299
regressions/ck_epoch: fix up message.
8 years ago
Samy Al Bahra
cce21287fe
ck_epoch_call: basic coverage for call_strict.
8 years ago
Samy Al Bahra
8580ccc580
ck_epoch: introduce synchronize_wait that allows blocking synchronize operation.
8 years ago
Samy Al Bahra
8c12481577
regressions/ck_epoch: n_dispatch is now unsigned int.
8 years ago
Samy Al Bahra
77fc933229
regressions/epoch/torture: include synchronize latency.
8 years ago
Samy Al Bahra
24d26965d1
regressions/ck_epoch_section_2: Force exit after timer.
8 years ago
Alexey Kopytov
696ae6e995
Add benchmarks for ck_pr_add_64(), ck_pr_faa_64() and ck_pr_neg_64().
8 years ago
Alexey Kopytov
ab8f2b0344
Add AArch64 timer support to rdtsc().
...
Add support for RDTSC-like timer on AArch64. This is only used by the
internal regression/benchmark test suite.
8 years ago
Olivier Houchard
1b461ca57a
regressions/ck_spinlock: Add ck_hclh to the check target.
8 years ago
Olivier Houchard
2552550256
regressions/ck_hp: Make sure stores are visible before attempting CAS.
8 years ago
Roman Lebedev
b6d82a481a
Ht: regressions: validate serial: check that our hash function was actually called.
...
Of course, assumes that there won't be an overflow caueing
it to be exactly 0 in the end...
The test fails.
9 years ago
Samy Al Bahra
03bd7a4158
regressions/ck_epoch: Change formatting.
9 years ago
Samy Al Bahra
f97d3da5c3
regressions/ck_sequence: Use flag rather than counter value for first set.
...
Prevents resetting exit barrier on overflow. Otherwise, hangs occur
on higher-performing systems.
9 years ago
Samy Al Bahra
ece3a24a4f
regressions/ck_epoch: Switch to heap allocated records for torture test.
9 years ago
Samy Al Bahra
5b64342668
regressions/ck_epoch: Remove counter dependencies from torture parity test.
9 years ago
Samy Al Bahra
f22f921576
regressions/ck_epoch_section_2: Switch to heap allocated records.
9 years ago
Samy Al Bahra
5999d8a243
regressions/ck_epoch: Shorten stack walk length for ck_epoch_synchronize.
...
This test was taking excessively long (read: hours) on some targets.
9 years ago
Samy Al Bahra
3a3562b96c
regressions/epoch: Add new torture test.
...
Verified with fault injection into ck_epoch_synchronize.
9 years ago
Samy Al Bahra
275908d246
regressions: Add ck_test convenience macro.
9 years ago
Samy Al Bahra
c845efcb0a
regressions/epoch: Various clean-up including fixes for Windows.
9 years ago
Samy Al Bahra
968b56598b
regressions/epoch: Additional coverage for epoch sections.
9 years ago
Samy Al Bahra
2e75aefc4a
ck_epoch: Allow for forward progress in concurrent epoch sections.
...
This work is derived directly from the work of John Esmet and Paul
Khuong ({jesmet,pkhuong}@appnexus.com) and PR34.
9 years ago
Samy Al Bahra
0d6d384f3f
ck_epoch: Cache associated epoch state machine in record.
...
This ends up removing arguments (and vector for error) for several
functions on the common path of ck_epoch.
9 years ago
Samy Al Bahra
ea9658d8d8
regressions: Switch to volatile load on ready flag.
9 years ago
Samy Al Bahra
cc600e7d4f
ck_ring: Add MPMC and MPSC variants.
9 years ago
Michael Haberler
7d1e3a6723
regressions/ck_cohort: make it pass with CORES=1
9 years ago
Samy Al Bahra
dfd8b2fb96
Merge branch 'master' of github.com:concurrencykit/ck
9 years ago
Samy Al Bahra
da4b956499
regressions/ck_ht: Remove dependency on ck_pr_add_64.
9 years ago
Olivier Houchard
576e65fc74
ck_ht: Fallback to use 32bits values when 64bits load/store isn't supported.
...
That way we can use ck_ht on i386.
9 years ago
Samy Al Bahra
360bee1013
regressions/ck_pr/fp: Remove redundant load.
10 years ago
Samy Al Bahra
93c3d452a2
regressions/ck_pr: Add fence_lock coverage to fast-path test.
10 years ago
Samy Al Bahra
b46703ec5c
regressions: Add stupid fast-path benchmark for fences.
...
This is far from comprehensive but needed for some upcoming
tests.
10 years ago
Samy Al Bahra
7ffe069973
regressions/spinlock: Do not rely on RMW for counter update.
...
This makes it more likely to trigger load-store/store-load re-ordering
across critical sections.
10 years ago
Samy Al Bahra
6e49af143f
regressions/ck_hp: Switch to using ck_hp_set_fence.
10 years ago
Samy Al Bahra
0dfd145aa6
whitespace: Update Copyright messages.
10 years ago
Samy Al Bahra
ea567fc58a
regressions/ck_epoch: Additional -Wcast-qual clean-up.
10 years ago
Samy Al Bahra
959e5fd744
regressions/ck_epoch: -Wcast-qual clean-up.
10 years ago
Samy Al Bahra
2030767b21
regressions/ck_rhs: -Wcast-qual clean-up.
10 years ago