Samy Al Bahra
0231b68a8b
ck_spinlock: Add ck_spinlock_*_locked.
...
This class of functions detects whether or not the
lock is currently acquired.
13 years ago
Samy Al Bahra
e8a96f4fb8
ck_pr: Add ck_pr_fas_double for {ppc,x86_}64 and ck_pr_cas_double{_2} for x86_64.
13 years ago
Samy Al Bahra
5e7adf5983
ck_pr: Add respective feature flags for ck_pr_load/store_double.
13 years ago
William Irwin
41ef93744a
ck_pr: Add ck_pr_load_double()/ck_pr_store_double() in case volatile loads and stores of floating point values are needed.
13 years ago
Samy Al Bahra
851aaf8dd6
ck_brlock: Allow for recursive reader lock.
13 years ago
Samy Al Bahra
c03dd7a45c
ck_epoch: Update peak value on retire.
13 years ago
Samy Al Bahra
cc4b83793f
ck_epoch: Flip arguments, specify epoch_entry before destructor.
13 years ago
Samy Al Bahra
79c7e453ec
ck_epoch: Specify destructor in ck_epoch_retire.
13 years ago
Samy Al Bahra
10ffb2e6f1
ck_epoch: Support per-object destructors.
...
This increases epoch per-object overhead to 16 bytes.
13 years ago
Samy Al Bahra
0f48b6fe7a
ck_proxy: Add support for recursive epoch sections.
...
Note that the global epoch won't tick over until the
parent epoch section has completed.
13 years ago
Samy Al Bahra
b5755888fc
ck_rwlock: Add trylock variants with user-defined spin factor.
13 years ago
Samy Al Bahra
9feb93758f
ck_brlock: Add trylock variants with user-defined spin factor.
13 years ago
Samy Al Bahra
8b0e83e6ab
ck_brlock: No need for explicit pipeline stall if writer is active.
13 years ago
Samy Al Bahra
4e7c6ee270
Add full barrier for anderson spinlock.
13 years ago
Samy Al Bahra
5889498c16
ck_ring: Add modulo logic to ck_ring_size and CK_RING_SIZE.
14 years ago
Samy Al Bahra
d3f0a634ab
ck_fifo: Add a mechanism to extract the spare node from the SPSC FIFO.
14 years ago
Samy Al Bahra
6b627d9aad
ck_fifo: Add trylock interface to dequeue.
14 years ago
Samy Al Bahra
5b37b97f7e
ck_fifo: Add fifo trylock variant.
14 years ago
Samy Al Bahra
76411d5d63
ck_fifo: Add volatile variation of ISEMPTY, isempty.
14 years ago
Samy Al Bahra
c7a12c7ac2
ck_fifo: Add a simple spinlock interface for ck_fifo_spsc.
14 years ago
Samy Al Bahra
16c86b98e5
ck_rwlock: Add publish semantics for rwlock.
14 years ago
Samy Al Bahra
88ee328b78
ck_ring: Add CK_RING_SIZE/CAPACITY and ck_ring_size/capacity.
...
ck_ring_size will return the current size of the ring while ck_ring_capacity
will return the capacity of the specified ring.
14 years ago
Samy Al Bahra
006f58edcb
ck_rwlock: Add a naive rw spinlock after many requests.
14 years ago
Samy Al Bahra
786efb9594
ck_brlock: Add big reader spinlocks.
14 years ago
Samy Al Bahra
631d5f93f4
ck_pr/sparcv9: Recent SPARCs actually implement RSO.
...
ck_pr_fence_store/load will enforce store/load barriers
by default from now on.
14 years ago
sbahra
49a2820000
Added support for Sun Studio 12 C compiler.
...
build:
- configure step will generate relevant CFLAGS.
- build profiles are for convenience (developers can use themu
for cross-compilation).
regressions:
- Renamed ck_barrier unit tests to work-around behavior
of Solaris linker.
- Adopted use of a PTHREAD_CFLAGS variable.
ck_cc:
- Added internal CK_CC_IMM macro for compilers that are
verbose against impossible inline constraints (or limited
optimizers).
ck_pr/x86*:
- Adopted CK_CC_IMM macro.
- Dropped redundant constraints.
This work was mostly completed by Theo Schlossnagle
<jesus@omniti.com>, much thanks to him. He has
also provided access to a machine with Sun Studio 12.
14 years ago
Samy Al Bahra
38c614222a
ck_spinlock: Avoid modulus on unlock for power of 2 count.
14 years ago
Samy Al Bahra
69e5c56acb
Merge branch 'master' of git.concurrencykit.org:ck
14 years ago
Samy Al Bahra
f6a2cb1b39
ck_pr/x86_32: Drop 64-bit operations. We just don't care enough about these right now.
...
The real issue is supporting PIC environments. This likely requires stand-alone
assembly blobs, something we don't want to deal with right now.
14 years ago
Samy Al Bahra
d761291ab1
ck_pr: Alphabetically order includes.
14 years ago
Samy Al Bahra
3f87223d21
ck_epoch: Collect from previous instance of epoch. Add torture test.
...
This typo lead to incorrect results. Added a read-mostly torture
test (follow on work is volatile interface for stack).
14 years ago
Samy Al Bahra
13dd1a4f82
ck_epoch: Update reader-side.
14 years ago
Samy Al Bahra
70860736f6
ck_epoch: Update epoch on read.
...
It's safe to update thread epoch on entry to a read-side section.
Without this, it will be very easy to starve writers of reclamation.
14 years ago
Samy Al Bahra
cbe38a9999
ck_epoch: Remove whitespace.
14 years ago
Samy Al Bahra
20fb7a9200
ck_hp: Match epoch semantics.
...
Added improved observability and a ck_hp_purge.
The rename matches the naming used in ck_epoch.
Documentation updates to follow through soon.
14 years ago
Samy Al Bahra
a72e86e0ba
ck_epoch: Follow-up to previous commit.
...
Some changes were not checked in.
14 years ago
Samy Al Bahra
83f1436f84
ck_epoch: Redesigned and improved unit test and observability.
...
ck_epoch_reclaim is now the replacement for ck_epoch_flush.
ck_epoch_purge guarantees that all entries are reclaimed
for the provided record before exiting.
n_peak counter has been added, which provides the peak number
of items across all reclamation lists. n_reclamations provides
the number of reclamations across the lifetime of the record.
These are cleared on unregister.
ck_epoch_update has been renamed to ck_epoch_tick.
Hazardous sections which mutate shared structures are now
expected to begin with ck_epoch_write_begin and end with
ck_epoch_end.
Hazardous sections which read shared structures are now
expected to begin with ck_epoch_read_begin and end with
ck_epoch_end.
ck_hp_free is now more aggressive. It will attempt a
reclamation cycle any time the pending count is long.
I should probably add a ck_hp_retire to have a version
which allows for bulk updates to local reclamation lists.
14 years ago
Samy Al Bahra
492faed9a3
Reformatting changes for my new laptop.
14 years ago
Samy Al Bahra
ba11d1e579
ck_sequence: Match up types. Do not use current.
...
It clashes with current in the Linux kernel.
14 years ago
Samy Al Bahra
db9e07625a
ck_hp_fifo: Don't back-off when forwarding pointer.
14 years ago
Samy Al Bahra
ad4b577200
ck_hp_fifo: Store correct value in pointer.
14 years ago
Samy Al Bahra
8c708da8e8
ck_epoch: Use volatile store when updating local epoch.
14 years ago
Samy Al Bahra
7bd5259505
ck_fifo: MPMC variant will return "garbage" pointer which user can re-use.
14 years ago
Samy Al Bahra
158e1580f5
ck_hp_fifo: Fix broken build.
14 years ago
Samy Al Bahra
5180a6fb36
ck_hp_fifo: Add more fences. Add backoff.
14 years ago
Samy Al Bahra
beafb7d78e
ck_fifo: Add back-off and remove recycle.
...
Recycle will just be a bottleneck. The MPMC interface should instead
return a junk pointer and allow the user to manage its lifetime in
a way they see fit.
14 years ago
Samy Al Bahra
d7d1dfbf50
ck_hp: Remove barrier from set and allow user to batch.
...
A user may want to batch multiple slot updates. Enforcing strong
semantics in set would not allow this.
14 years ago
Samy Al Bahra
dffbb4b48f
ck_hp: Add explicit store fence after setting slot.
14 years ago
Samy Al Bahra
2302155613
ck_epoch: Reference Fraser's thesis.
14 years ago
Samy Al Bahra
f22bddddd5
ck_epoch: Place epoch on a separate cache line.
14 years ago