Paul Khuong
44a6527f33
ck_ring.h: make _ck_ring_enqueue_mp less failure happy
...
With preemption, it is possible for _ck_ring_enqueue_mp to have a
snapshot of p_head so stale with respect to the later snapshot of
c_head that a comparison modulo (small) ring size will erroneously
conclude that the ring is full.
Detect that case and retry rather than failing. We only retry when
the enqueuers have made global forward progress, so the first loop
is as lock-free as it ever was.
Bonus: the new condition should be marginally faster.
8 years ago
Olivier Houchard
b87563b7bd
configure: Fix usage with busybox.
...
expr as provided by busybox doesn't know about --, while most other
implementations require it, or it'd try to interpret --prefix=whatever as
one of its own options. To fix this, we just remove the first two characters
of the option before calling expr, rendering -- useles.
8 years ago
Samy Al Bahra
15529b2372
ck_ht_hash: fix misuse of preprocessor macro.
8 years ago
Samy Al Bahra
a6861b6add
build/ck.build.s390x: Explicitly define s390x.
...
This is sticking to the idiom in Concurrency Kit, to safe-guard against
freestanding (or non-Linux) targets with different conventions.
8 years ago
Samy Al Bahra
8b617bb728
ck_pr: add support for s390x.
...
Add s390x support. Neale Ferguson is the architecture maintainer.
8 years ago
Samy Al Bahra
8343bd4af8
spinlock/dec: backoff until lock state transition in lock_eb.
...
This fixes an issue caught by Changwoo Min (@multics69).
8 years ago
Neale Ferguson
52809f0039
Minor editorial updates and update CFLAGS for production use
8 years ago
Neale Ferguson
2c01ecec64
Add s390x support
8 years ago
Olivier Houchard
33e5698b01
configure: Add support for msys2.
...
Recognize msys2 systems, based on a patch provided in issue #96 by
ckkashyap.
8 years ago
Samy Al Bahra
6b141c0bdd
build: prepare 1.0.0 tag.
8 years ago
Samy Al Bahra
362f58e6b6
regressions: update ck_epoch usage.
8 years ago
Samy Al Bahra
db4554c686
regressions: update ck_epoch usage.
8 years ago
Samy Al Bahra
0ce7c1efef
ck_epoch: remove overzealous padding.
...
Pack shared linkage together in epoch record. Remove unnecessary
padding in epoch instance.
8 years ago
Samy Al Bahra
123c91a62f
epoch: update delref prototype.
8 years ago
Samy Al Bahra
87196ff37f
Merge pull request #93 from concurrencykit/res
...
ck_epoch: merge in res branch.
8 years ago
Samy Al Bahra
ffe9cbf9ca
ck_epoch: ck_epoch_end returns true if forward progress has been made.
8 years ago
Samy Al Bahra
6a9da5c91d
ck_epoch: add epoch_value to return current global epoch.
8 years ago
Samy Al Bahra
8391338299
regressions/ck_epoch: fix up message.
8 years ago
Samy Al Bahra
cce21287fe
ck_epoch_call: basic coverage for call_strict.
8 years ago
Samy Al Bahra
ec2d225324
ck_epoch: add barrier_wait operation.
8 years ago
Samy Al Bahra
8580ccc580
ck_epoch: introduce synchronize_wait that allows blocking synchronize operation.
8 years ago
Samy Al Bahra
a25e073a2b
ck_epoch: allow record sharing and reentrancy for write-side operations.
8 years ago
Samy Al Bahra
8c12481577
regressions/ck_epoch: n_dispatch is now unsigned int.
8 years ago
Samy Al Bahra
64ac40ab64
ck_epoch: there is no need to update record epoch for synchronize.
...
This is in preparation for upcoming work for allowing record sharing.
The write-side operations rely only on global state. Future work, we can play
tricks by caching latest call epoch while still building on the core EBR
concept.
8 years ago
Samy Al Bahra
77fc933229
regressions/epoch/torture: include synchronize latency.
8 years ago
Samy Al Bahra
f8d5022030
configure: do not rely on pathsearch if full executable path provided.
...
This issue was pointed out by Mark Callaghan. Fixes #90 .
8 years ago
Samy Al Bahra
24d26965d1
regressions/ck_epoch_section_2: Force exit after timer.
8 years ago
Samy Al Bahra
343246d377
build: release 0.6.0.
8 years ago
Samy Al Bahra
d24fc277ad
epoch: fix idle detection bug in synchronize.
...
An idle grace period requires all threads to be idle. This optimization
introduced a regression with idle detection if subset of threads are
both active and idle. Unfortunately, none of our test machines detected
the problem.
This issue was reported by Julie Zhao <julie.zhao@sparkpos....>
8 years ago
Olivier Houchard
255a47553a
Merge pull request #88 from akopytov/benchmarks
...
Add benchmarks for ck_pr_add_64(), ck_pr_faa_64() and ck_pr_neg_64().
8 years ago
Alexey Kopytov
696ae6e995
Add benchmarks for ck_pr_add_64(), ck_pr_faa_64() and ck_pr_neg_64().
8 years ago
Olivier Houchard
d8d5b01a1a
Merge pull request #87 from akopytov/aarch64_timer
...
Add AArch64 timer support to rdtsc().
8 years ago
Alexey Kopytov
ab8f2b0344
Add AArch64 timer support to rdtsc().
...
Add support for RDTSC-like timer on AArch64. This is only used by the
internal regression/benchmark test suite.
8 years ago
Olivier Houchard
4a028fb517
Merge pull request #86 from akopytov/lse
...
AArch64 LSE support.
8 years ago
Alexey Kopytov
5f1be5dc83
AArch64 LSE support.
...
Add a new configure option, --enable-lse, which is only effective for
the AArch64 architecture. When used, most ck_pr_* atomics will use Large
System Extensions instructions as per the ARMv8.1 specification, rather
then LL/SC instruction pairs.
8 years ago
Olivier Houchard
dae84bac06
ck_pr/aarch64: style.
8 years ago
Olivier Houchard
4425c94ef7
ck_pr/aarch64: Don't forget the "cc" and "memory" clobbers.
8 years ago
Olivier Houchard
02af290b85
ck_pr: Add an option to disable any double function
8 years ago
Olivier Houchard
566bb28dba
Merge pull request #84 from hbowden/master
...
Add cygwin support.
8 years ago
Harry
92dfe0726c
Add cygwin support.
8 years ago
Olivier Houchard
2868848a2f
ck_pr/ppc: Get the right prototype for ck_pr_cas_ptr_value().
8 years ago
Olivier Houchard
5ae12a19d0
gcc/ck_pr: Try to make sure the compiler isn't unhappy about constness.
8 years ago
Olivier Houchard
1c9257af77
ck_pr: missed a few occurrences of stdbool.h that should be ck_stdbool.h.
8 years ago
Olivier Houchard
2159452170
ck_pr/aarch64: Use the right asm constraints.
...
We don't have to claim we will read the value from variables when we do not,
this was only done to work around a bug on some versions of gcc for arm
a while ago, hopefully this won't be needed here.
This should fix the (harmless) warnings described in issue #83 .
8 years ago
Olivier Houchard
7c456ca778
ck_pr/aarch64: That should be CK_PR_AARCH64_H, not CK_PR_ARM_H
8 years ago
Olivier Houchard
92aabcade0
ck_pr: First cut at an aarch64 native implementation.
...
This seems to survive a "make check" on a 48 cores arm64 board.
8 years ago
Olivier Houchard
1b461ca57a
regressions/ck_spinlock: Add ck_hclh to the check target.
8 years ago
Olivier Houchard
2552550256
regressions/ck_hp: Make sure stores are visible before attempting CAS.
8 years ago
Olivier Houchard
5530535f2a
doc: enfores => enforces
8 years ago
Olivier Houchard
9c072391cf
ck_pr/arm : We never defined CK_PR_CAS_S, so there's no need to undef it.
8 years ago