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
Samy Al Bahra
46a88705c4
ck_hp: Include missing ck_backoff.h include.
13 years ago
Samy Al Bahra
e074a089be
ck_epoch: Include missing ck_backoff.h file.
13 years ago
Samy Al Bahra
1cabea8a54
ck_hp_{fifo, stack}: Get rid of backoff behavior by default.
13 years ago
Samy Al Bahra
7dd549418a
ck_bytelock: Remove backoff behavior by default.
13 years ago
Samy Al Bahra
11505f8417
ck_fifo: Remove backoff behavior by default.
13 years ago
Samy Al Bahra
e8265d8735
build: Bump version for next minor release.
13 years ago
Samy Al Bahra
abcee3ff51
README: Remove trailing whitespace.
13 years ago
Samy Al Bahra
42615a234f
ck_bag: Remove trailing whitespace.
13 years ago
Samy Al Bahra
ef3e6f394b
ck_ht: Remove trailing whitespace.
13 years ago
Samy Al Bahra
f61c694656
ck_bag: Whitespace clean-up.
13 years ago
Samy Al Bahra
4fcb6a5e5f
ck_bag: Disable pointer packing by default.
13 years ago
Samy Al Bahra
8bed9627a6
ck_ht: Enable pointer packing only if explicitly enabled.
...
Pointer packing is only utilized on the x86_64 port.
13 years ago
Samy Al Bahra
84f7136cbb
build: Add deletion of ck_md.h to distribution target.
13 years ago
Samy Al Bahra
f38cc85ac9
build: Add --enable-pointer-packing option.
...
Pointer packing is now disabled by default for x86_64 targets.
Jeffrey M. Birnbaum <jmbny.@...> told me that according to his
discussions with Intel engineers, Haswell will be bumping up
VMA bits to 56 bits from 48.
If you control the hardware that CK is deployed to and don't
envision a migration to 48-bits anytime soon, then you may
enable old behavior (resulting in significant memory savings
for some data structures, namely ck_ht) by passing the
--enable-pointer-packing flag to configure.
13 years ago
Samy Al Bahra
2b2e44203b
Merge pull request #5 from abelmathew/master
...
ck_bag: Merge from abelmathew/master.
13 years ago
Abel Mathew
6a6f1d53c8
ck_bag: Validate block_size > block_overhead during ck_bag_init.
...
Check ck_bag_init return value in unit test.
13 years ago
Abel Mathew
2e921847ab
ck_bag: Free unoccupied blocks in ck_bag_destroy.
13 years ago
Abel Mathew
bbc6f584fd
ck_bag: Various Bug Fixes and Cleanup.
...
Migrate available block list to CK_LIST.
New blocks are only allocated when the available list is exhausted.
Remove bag->avail_tail.
Print out number of writer iterations for unit test.
Lengthen duration of unit test.
13 years ago
Samy Al Bahra
2136067723
Merge branch 'master' of git.concurrencykit.org:ck
13 years ago
Samy Al Bahra
8a3c4786a8
ck_bag: Initialize n_entries.
13 years ago
Samy Al Bahra
08fc765a17
LICENSE: Update Copyright years.
13 years ago
Samy Al Bahra
7b7f9cde52
Merge pull request #4 from philips/license-file-add
...
LICENSE: initial commit
13 years ago
Brandon Philips
edd75b9a87
LICENSE: initial commit
...
Add a license file just to make it easier for discovery.
13 years ago