Samy Al Bahra
ef82078e59
ck_ht: Fix bug in tombstone replacement on set.
...
We must force a reprobe before setting the old
slot key field to a tombstone.
13 years ago
Samy Al Bahra
a7031bf938
ck_malloc: Add stdbool.h include.
13 years ago
Samy Al Bahra
2d37b6f828
ck_malloc: Add shared structure for representing data structure-specific allocation functions.
...
This structure is due to change soon.
13 years ago
Samy Al Bahra
9f786337f7
ck_ht: Lock-free SPMC hash table, for x86_64.
...
This is a hash table that is optimized for architectures that
implement total store ordering and workloads that are read-heavy
involving a single writer and multiple readers. Unlike traditional
non-blocking multi-producer/multi-consumer hash table
implementations this version allows for immediate re-use of deleted
buckets (no need for explicit reclamation cycles) and is more
conducive to traditional safe memory reclamation schemes used in
unmanaged languages (otherwise, we would require key duplication).
It is relatively heavy-weight for MPMC workloads on architectures
which do not implement TSO in comparison to Click's MPMC hash
table. However, it still has better performance characteristics
than a blocking hash table.
The committed version currently only provides x86_64 support. This is
being committed for review by peers and for a silent release that will
allow us to test ck_ht_spmc under high production workloads.
Next public release will include additional documentation as well as
support for other architectures.
In the mean time, please see the unit tests for example usage. Included in
this commit: Dropped -Wbad-function-cast from GCC port.
13 years ago
Samy Al Bahra
dc97d69ca4
build: Bump version for next release.
13 years ago
Samy Al Bahra
722b794083
build: Use relative symbolic link.
...
Submitted by Andrew J. Schorr <aschorr@telemetry-...com>.
13 years ago
Samy Al Bahra
84535028d9
regressions: ck_ring_spsc_template explicit power of 2 parameter.
13 years ago
Samy Al Bahra
d7bba58c0f
regressions: ck_ring_spsc is now explicit about power-of-2 parameter.
13 years ago
Samy Al Bahra
d341f67bea
build: Prepare for next release.
13 years ago
Samy Al Bahra
a746ac7121
build: Make sure to delete libck.a.
13 years ago
Samy Al Bahra
f49b21fe59
build: Remove ck.spec in distribution target.
13 years ago
Samy Al Bahra
d6e306a2e4
build: Add RPM specification, fix DESTDIR usage on install step.
...
Submitted by Andrew J. Schorr <aschorr@telemetry-...com>.
13 years ago
Samy Al Bahra
3fa28d9a95
regressions: Fix typo in ck_queue regressions, _GNU_SOURCE also needed.
13 years ago
Samy Al Bahra
02109beef7
regressions: Fix ck_queue, remove debug CFLAGS, inherit PTHREAD_CFLAGS.
...
Reported by Johan Bergstrom (http://github.com/jbergstroem ).
13 years ago
Samy Al Bahra
4fc1717975
ck_epoch: Use full barrier on read begin and load barrier on read end.
...
We shouldn't offload the responsibility of the read_begin flush
for shared data mutations to the user. read_end requires a load
barrier at the least, not a store barrier.
13 years ago
Samy Al Bahra
ab6cbec48b
build: Prepare for next tag.
13 years ago
Samy Al Bahra
674e69f259
ck_queue: Add BSD-derived queue.h facility.
...
Writer-side synchronization is still necessary. My current use-cases call for
SLIST and LIST implementations, and as such, I've only implemented support
for these. TAILQ facilities will be developed when the time comes that I require
them or if there is sufficient user-demand.
13 years ago
Samy Al Bahra
4d2f01b84d
regressions: Do not break strict aliasing rules in ck_pr validation tests.
...
Signed-off-by: Samy Al Bahra <sbahra@appnexus.com>
13 years ago
Samy Al Bahra
941bc25734
regressions: Add missing include for memset.
...
Signed-off-by: Samy Al Bahra <sbahra@appnexus.com>
13 years ago
Samy Al Bahra
544de60849
ck_pr: Add appropriate casts to ck_pr_cas unit test.
13 years ago
Samy Al Bahra
9dd525d9ee
regressions: Remove my awesome attempt at documenting ck_pr_cas.c
13 years ago
Samy Al Bahra
becdffadac
regressions: arguments are currently unused.
13 years ago
Samy Al Bahra
941542704e
ck_pr: bzero is deprecated.
13 years ago
Samy Al Bahra
f5f5074b70
ck_pr: Cast down to void pointer for cmpxchg16b wrapper.
13 years ago
Samy Al Bahra
eae4a518a8
ck_epoch: Differentiate read/write epoch endings.
...
ck_epoch_end is deprecated. Please use ck_epoch_read_end
and ck_epoch_write_end instead.
13 years ago
Samy Al Bahra
5f53f86cab
regressions: Add missing ck_ring SPMC benchmark.
13 years ago
Samy Al Bahra
17f69d6c0d
ck_md: Parenthesize CK_MD_CACHELINE.
13 years ago
Samy Al Bahra
5bcc131a35
build: Use shorter URL in pkg-config spec.
13 years ago
Samy Al Bahra
c047201846
build: Bump revision for next release.
13 years ago
David Joseph
0123c454f4
ck_pr: Add support for atomic ops for doubles.
...
Implemented add, sub, dec, inc, neg, faa and fas in terms of CAS.
13 years ago
Samy Al Bahra
1cefea7eb6
ck_spinlock: Provide a default implementation.
...
Several users in the past have noted it was difficult for them
to decide what spinlock implementation to use. In light of this,
a light-weight greedy default is chosen (currently ck_spinlock_fas).
13 years ago
Samy Al Bahra
50f6f6ee02
ck_rwlock: Add ck_rwlock_write_downgrade.
...
This function allows the writer to downgrade to shared access
atomically.
13 years ago
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
Samy Al Bahra
1513afefda
build: Prepare for next minor release.
13 years ago
Samy Al Bahra
0e20787a1d
build: Bump version for next minor release.
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
500c81cbf8
README: Update URL.
13 years ago
Samy Al Bahra
851aaf8dd6
ck_brlock: Allow for recursive reader lock.
13 years ago
Samy Al Bahra
0d8faa5cd8
ck_epoch: Update unit tests to conform to new API.
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
273bc0703d
build: Prepare version for next minor release.
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