Samy Al Bahra
8b717df3f0
doc: ck_elide fixes and improvements including examples.
12 years ago
Samy Al Bahra
cd3dd99bd7
doc: Document adaptive elision interface.
...
Still need follow-up examples for ck_rwlock and
ck_spinlock.
12 years ago
Samy Al Bahra
cc231e4ab0
ck_elide: No need to expose ck_elide_stat.
12 years ago
Samy Al Bahra
906eaf1881
ck_elide: Fold CK_ELIDE_ADAPTIVE_PROTOTYPE into PROTOTYPE.
12 years ago
Samy Al Bahra
b67e91c858
ck_rwlock: Fold CK_ELIDE_ADAPTIVE_PROTOTYPE into PROTOTYPE.
12 years ago
Samy Al Bahra
768b5b3597
ck_rwlock: Add adaptive elision and unit tests.
12 years ago
Samy Al Bahra
fe8deba87d
ck_elide: Adaptive elision semantics.
...
These come in the form of CK_ELIDE_ADAPTIVE_PROTOTYPE,
CK_ELIDE_LOCK_ADAPTIVE and CK_ELIDE_UNLOCK_ADAPTIVE.
Primarily pushing this for the few that are playing with
master.
This is inspired by Andi Kleen's work for adaptive behavior
in the Linux kernel's RTM locks implementation. There are
various differences in the state machine, however. Specifically,
the concept of a retry and a busy-wait has been unified due
to state machine simplification such that any exhausted busy-wait
cycle reverts to a forfeit (a busy-wait is a specialized retry).
Follow-up work will involve allowing for is_locked behavior
to yield what users expect, if called from with-in a transaction
through the wrapper. It is warned that this will come at a performance
penalty.
12 years ago
Samy Al Bahra
43f7a7692a
ck_cc: Expand LIKELY/UNLIKELY on unsupport compilers.
12 years ago
Samy Al Bahra
23353395ba
doc: Add ck_elide documentation.
12 years ago
Samy Al Bahra
f214d9419e
ck_spinlock: Move elision prototype to end of file.
12 years ago
Samy Al Bahra
c76441fff3
ck_stack: Style changes.
12 years ago
Samy Al Bahra
fc0bfae1da
ck_elide: Commentary on ck_elide interface.
12 years ago
Samy Al Bahra
ac4a703525
regressions: Get rid of debug flags in ck_rwlock benchmark.
12 years ago
Samy Al Bahra
59a1b53e86
ck_spinlock: Migrate to ck_elide.h.
...
Pending unit test updates.
12 years ago
Samy Al Bahra
671f82d7a8
ck_rwlock: Migrate to ck_elide.h.
12 years ago
Samy Al Bahra
68a614328a
ck_elide: General lock elision framework.
...
This allows users to wrap any single-argument lock implementation
to support lock elision. Built-in lock types will make use of this
facility.
12 years ago
Samy Al Bahra
0517a51b06
ck_spinlock: Weaken volatile store in clh_lock.
12 years ago
Samy Al Bahra
64b1201dcc
ck_spinlock: Acquire semantics for old locked operations.
...
Even though the intended use-case is for testing, developers
may want correctness guarantees in other situations.
12 years ago
Samy Al Bahra
143bc4b336
regressions: Add ck_spinlock locked coverage.
12 years ago
Samy Al Bahra
a51c8c7aa6
ck_spinlock: Add ck_spinlock_clh_locked.
12 years ago
Samy Al Bahra
46d61ccd46
ck_spinlock: Add ck_spinlock_ticket_locked.
12 years ago
Samy Al Bahra
f149dd09fe
ck_pr: Add ck_pr_fence_strict_atomic for x86-64.
12 years ago
Samy Al Bahra
55decd0b38
ck_spinlock: Add ck_spinlock_anderson_locked.
12 years ago
Samy Al Bahra
a03d58fff2
ck_rwlock: Use heavier-weight barrier on write path.
...
This is an example limitation of fence_X_Y variant. I am
considering extending this to include an acquire extension.
Use a memory fence to force total order in a manner that
will be clearer to other developers who read this.
This did not manifest as a problem on any target architectures
due to their handling of atomic operations (SPARC models it as
both a load and a store, while Power atomic_load ordering was
enforced through a full barrier).
12 years ago
Samy Al Bahra
a694e871ca
ck_rwlock: Relax write_trylock_rtm semantics.
...
trylock semantics are best effort to begin with, so
avoid fallback path all together.
12 years ago
Samy Al Bahra
3fbefc5042
ck_rwlock: Add read_trylock_rtm.
12 years ago
Samy Al Bahra
4d2ccfe497
ck_rwlock: Add basic RTM interface to rwlock.
...
It is possible this will be moved to a self-contained file.
For a majority of architectures, RTM is an unnecessary
implementation-specific optimization.
12 years ago
Samy Al Bahra
39ed9c6b8a
git: Add ck_sequence benchmark to gitignore.
12 years ago
Samy Al Bahra
7f5216c4c6
regressions/ck_sequence: Add fast-path latency measurement.
12 years ago
Samy Al Bahra
2ed965bfc2
ck_pr_rtm: Fix xtest output clobber identifier.
12 years ago
Samy Al Bahra
43a6628cf1
ck_pr: Initial support for TSX.
...
goto label support has been omitted for the moment.
A majority of initial targets are still pre-gcc-4.7
to support multiple branches.
12 years ago
Samy Al Bahra
04590839d9
ck_sequence: change retry to take unsigned int.
...
version identifier is unsigned int not uint32_t.
12 years ago
Samy Al Bahra
a8a74b9f57
ck_spinlock: Remove erroneous mask usage for non-x86 targets.
12 years ago
Samy Al Bahra
045d0e1053
ck_spinlock: Apply modulo arithmetic to proportional back-off ticket lock.
12 years ago
Samy Al Bahra
d0745f51ee
regressions: Lower wait factor for ck_ticket_pb.
12 years ago
Samy Al Bahra
33f30ac941
build: Bump version for next release.
12 years ago
Samy Al Bahra
68ec467ca8
ck_hs: Branch simplification on fast path.
...
Take advantage of probe function invariant
(object != NULL) -> (slot != NULL).
12 years ago
Samy Al Bahra
6587bfa51d
ck_hs: Universally use slot as unit for probe limit optimization.
12 years ago
Samy Al Bahra
cd53e928bf
ck_cc: Add branch execution hint support for GCC.
12 years ago
Samy Al Bahra
b63fe45460
regressions: Fix uninitialized usage in ck_hs parallel_bytestring.
12 years ago
Samy Al Bahra
1cdbb7b7bf
ck_hs: Remove unused return value from ck_hs_fas.
12 years ago
Samy Al Bahra
be9f0d489c
doc: Enable ck_hs_fas manual page compression.
12 years ago
Samy Al Bahra
e330bb9749
doc: Add cross-references to ck_hs_fas.
12 years ago
Samy Al Bahra
3eb29381e6
doc: Update ck_hs_fas title.
12 years ago
Samy Al Bahra
c27f4f27e5
doc: Add ck_hs_fas manual page.
12 years ago
Samy Al Bahra
03efd38742
regressions: Testing of ck_hs_fas functionality.
12 years ago
Samy Al Bahra
7da381bb1a
ck_hs: Prototype for new ck_hs_fas operation.
12 years ago
Samy Al Bahra
693ad68b86
ck_hs: Existence requires generation check.
...
It is possible for a defragmenting set or swap operation
to set a tombstone. If the probe sequence does not encounter
an empty slot and hits maximum write-side probe limit first
for it to fail to reprobe defragmenting store.
12 years ago
Samy Al Bahra
86619b3c38
ck_hs: Add atomic swap operation (requires existence).
12 years ago
Samy Al Bahra
cc164d86e9
doc: Fix argument reference in ck_hs_set manual page.
12 years ago