Samy Al Bahra
ad5e143bd5
ck_ring: Various improvements to readability.
...
No regressions in unit tests, so I'm dropping volatile
semantics for unnecessary volatile load/store on producer/consumer
side.
12 years ago
Samy Al Bahra
290add2e50
build/regressions: Add CORES option, add "check" target.
...
The check target will attempt to run the unit tests with some
sane defaults.
12 years ago
Samy Al Bahra
fbb88a519c
ck_bytelock: read_lock must serialize all load/store before checking owner field.
...
Thanks to Andrew Schorr for reporting the unit test failure.
12 years ago
Samy Al Bahra
3afa6b2b39
ck_ht: Let users define their own empty and tombstone values.
12 years ago
Samy Al Bahra
94c26494a6
ck_ring: Size is no longer necessary.
...
Patch submitted by Andrew Schorr.
12 years ago
Samy Al Bahra
1a8b3db453
ck_ht: Various performance improvements.
...
Though a new implementation is in the works, roll in
some performance improvements in the mean time.
The probe routines have been broken out into separate
reader/writer variants. These variants are much less
branch-intensive (and don't involve predict to stall
in many cases).
New implementation is attempting to deal with
interface-induced overheads.
12 years ago
Samy Al Bahra
e1ec55819e
regressions/common. Move edx/eax to x86_64 block.
12 years ago
Samy Al Bahra
a56cac3a38
regressions/ck_sequence: Work-around LLVM bug.
...
For some reason, load operations were being re-ordered with respect
to read begin operation (even with explicit compiler barriers).
12 years ago
Samy Al Bahra
7657df25a8
ck_sequence: Serialize read_begin, add load barrier.
12 years ago
Samy Al Bahra
d100c8b834
Merge pull request #6 from abelmathew/master
...
ck_bag documentation
12 years ago
Abel Mathew
b9c6532b2a
Merge branch 'master' of https://github.com/sbahra/ck
12 years ago
Abel Mathew
5ca4e884bd
doc/ck_bag: Add ck_bag documentation.
12 years ago
Samy Al Bahra
ac8acffe6a
Merge branch 'master' of git.concurrencykit.org:ck
13 years ago
Samy Al Bahra
2015f0f5d4
Merge branch 'master' of git.concurrencykit.org:ck
13 years ago
Samy Al Bahra
e9bd744877
doc/ck_ht_entry_set_direct: Update manual page to include latest API change.
13 years ago
Samy Al Bahra
37d8a5e98d
build: Bump version for next release.
13 years ago
Samy Al Bahra
976f017450
build: Move symbolic link to -devel package, keep .spec file in distributions.
...
Patch submitted by Andrew Schorr <schorr@te....>.
13 years ago
Samy Al Bahra
031d950cc0
ck_stack: Add aliased attribute to ck_stack for GCC 4.4.
13 years ago
Samy Al Bahra
65cf506af9
ck_cc: Add CK_CC_ALIASED attribute.
...
Submitted by John Wittrock <jwittrock@...>.
13 years ago
Samy Al Bahra
7dd705c86f
ck_ht: Remove ck_ht_allocator_set declaration.
13 years ago
Samy Al Bahra
59158c824b
ck_ht: Do not re-hash on growth for non-PP case.
...
We already store the hash value in the hash table entry
if pointer packing is not enabled.
13 years ago
Samy Al Bahra
ccb1fd6d86
ck_fifo: Add some load fences for SPARC/PPC.
13 years ago
Samy Al Bahra
7d6626131d
ck_hp_fifo: Forgot load fence in last commit.
13 years ago
Samy Al Bahra
319872ca8c
ck_hp_fifo: Fix race condition on dequeue.
...
I accidentally swapped head/tail load in ck_hp_fifo (not in
ck_fifo, however). We must acquire head snapshot before tail snapshot.
An example execution history which could cause an incorrect update to occur
is below.
- tail <- fifo.tail / fifo.head != fifo.tail
- dequeue to empty (until final CAS which renders fifo.head = fifo.tail)
- head <- fifo.head / (head != tail)
- next <- fifo.head->next / next = NULL
- As head != tail, update to next pointer (where next is NULL).
However, if
- head <- fifo.head / (fifo.head != fifo.tail)
- dequeue to empty (until final CAS which renders fifo.head = fifo.tail)
- tail <- fifo.tail / fifo.head != fifo.tail
- next <- fifo.head->next / next = NULL
If we caught tail in final transition, the by the time we read next pointer,
head would have also changed forcing us to re-read. Thanks to Hendrik Donner
for reporting this.
13 years ago
Samy Al Bahra
f02b87cd65
build: Bump version for next release.
13 years ago
Samy Al Bahra
72a8adb599
ck_ht: Add support for per-hash-table allocator.
...
Documentation and regressions tests have been updated to reflect this.
This functionality allows for individual hash tables use to different
allocation functions. Thanks to Wez Furlong for pointing out the necessary
documentation update for ck_ht.
13 years ago
Samy Al Bahra
af7b877414
regressions/ck_ht: Turn off CK_MD_RDTSCP by default.
13 years ago
Samy Al Bahra
cc23781512
regressions/ck_ht: Switch to a format that is more readable by R.
...
This allows me to use read.table with minimal changes.
13 years ago
Samy Al Bahra
9a3909163f
regressions/ck_ht: Drop secondary sequence table.
...
It is unnecessary, we primarily end up measuring cache miss costs
with it.
13 years ago
Samy Al Bahra
0b32fd064e
regressions/ck_ht: Previous commit was in fact shuffled insertion.
...
Add actual shuffled get.
13 years ago
Samy Al Bahra
efdae8f77b
regressions/ck_ht: Extend serial benchmark.
...
Add key shuffle get test.
13 years ago
Samy Al Bahra
3b5a3c857e
regressions: Update out-of-date comment.
13 years ago
Samy Al Bahra
da9e0f58f1
regressions: Use RDTSCP in presence of CK_MD_RDTSCP.
13 years ago
Samy Al Bahra
b353ebe8c2
regressions: Remove debug build flags.
13 years ago
Samy Al Bahra
314ce3ad81
ck_rwlock: Drop factor argument to trylock API.
...
Remove read-side recursion tests, it is an unsupported
feature to begin with.
13 years ago
Samy Al Bahra
512bbc050b
ck_rwlock: Add recursive trylock operations.
...
Unlike ck_rwlock, there is no spin factor associated with these.
13 years ago
Samy Al Bahra
380dd410c6
ck_backoff: Saturate geometric back-off.
...
A simple regression test has been added to verify this behavior.
13 years ago
Samy Al Bahra
fc2517947b
regressions/ck_ht: Use user-specified hash function for direct benchmark.
13 years ago
Samy Al Bahra
fc00a31815
doc/ck_ht: Update ck_ht_init documentation.
13 years ago
Samy Al Bahra
a832237b0a
ck_ht: We do not need to reprobe for direct tables on a per-slot basis.
13 years ago
Samy Al Bahra
500d36cdb8
ck_ht: Fix race condition associated with no pointer packing variant.
...
We must still reprobe after value check. This only affects builds
without --enable-pointer-packing (or releases >= 0.2.3).
13 years ago
Samy Al Bahra
18d74f55a1
ck_ht: Add support for user-specified hash functions.
13 years ago
Samy Al Bahra
a361153e07
build: Bump version for next release.
13 years ago
Samy Al Bahra
606afe0f23
ck_rwlock: Add ck_rwlock_recursive facility.
...
Allows for write-side recurion. Added upon request by
other users. Regression test has been updated.
13 years ago
Samy Al Bahra
402c31ca9a
ck_hp_fifo: Add try{enqueue,dequeue} variants.
...
Regression test has been updated and passes.
13 years ago
Samy Al Bahra
a90b402c0c
regressions/ck_fifo: Add test for try{enqueue,dequeue} API.
13 years ago
Samy Al Bahra
816e11ff61
ck_fifo: Add tryenqueue/trydequeue wait-free operations.
...
Pending regressions tests, taking snapshot while I move to cafe.
13 years ago
Samy Al Bahra
286cc8b012
ck_hp_stack: Add trypush/trypop variants.
...
Regressions tests pending an update (taking a snaphot, A/C is down).
13 years ago
Samy Al Bahra
ff6f4d94f4
ck_stack: Add wait-free trypop and trypush operations.
...
Regression tests have been updated to test these operations as
equivalents to regular looping push/pop operations.
13 years ago
Samy Al Bahra
9446bc3e96
ck_stack: Get rid of default back-off behavior.
13 years ago