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
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
9c072391cf
ck_pr/arm : We never defined CK_PR_CAS_S, so there's no need to undef it.
8 years ago
alfredo
bc594bf809
use __restrict__ under GCC to support both C++ and C
8 years ago
铁哥
4f01918cbb
Update ck_ring.h
...
fix bug
9 years ago
Roman Lebedev
1a10ab230e
ck_queue: update doc: no tail queue, add STAILQ description
...
Singly-linked tail queue description is taken from sys/queue.h
9 years ago
Samy Al Bahra
2686ca0223
ck_epoch: Bug fixes and performance improvements.
...
- ck_epoch_begin: Disallow early load of epoch as it leads to measurable
performance degradation in some benchmarks.
- ck_epoch_synchronize: Enforce barrier semantics.
9 years ago
Samy Al Bahra
80a9b6ff9c
epoch: Fix fat-finger that breaks epoch sections.
...
And this is why tests should also be validated against
fault injection.
9 years ago
Samy Al Bahra
ff23c2d3fd
ck_bitmap: Use CK_BITMAP_OFFSET.
9 years ago
Samy Al Bahra
7646fb624b
ck_pr: fence_memory now has strict semantics on TSO.
...
The old behavior was from the world before the great fence
refactor.
9 years ago
Samy Al Bahra
9893f12bcf
ck_ht: ck_hm not making it to next release, remove warning.
9 years ago
Samy Al Bahra
2e75aefc4a
ck_epoch: Allow for forward progress in concurrent epoch sections.
...
This work is derived directly from the work of John Esmet and Paul
Khuong ({jesmet,pkhuong}@appnexus.com) and PR34.
9 years ago
Samy Al Bahra
0d6d384f3f
ck_epoch: Cache associated epoch state machine in record.
...
This ends up removing arguments (and vector for error) for several
functions on the common path of ck_epoch.
9 years ago
Paul Khuong
f1302c4920
ck_ring: explicit casts to clarify the semantics of generic (pointer) dequeuing
9 years ago
Samy Al Bahra
52f42c4392
ck_pr: Add ck_pr_fence_acqrel.
...
Provides both acquire and release semantics.
9 years ago
Olivier Houchard
27fb1bc00f
ck: Reimplement a few libc headers, to make CK build when compiling in the
...
FreeBSD kernel.
9 years ago
Samy Al Bahra
4677de8473
ck_ring: [whitespace] Add comment to PROTOTYPE family.
9 years ago
Samy Al Bahra
fee4e7187b
ck_ring: Clean-up internal implementations.
...
Break out internal implementations to _mp and _sc variants from which
public interface is built on. Do not rely on macro. Adopt CK_CC_RESTRICT
instead of using restrict directly.
9 years ago
Samy Al Bahra
414ba224ca
ck_cc: Add FORCE_INLINE attribute and remove stale comments.
9 years ago
Samy Al Bahra
cc600e7d4f
ck_ring: Add MPMC and MPSC variants.
9 years ago
Samy Al Bahra
e88c91cdbd
ck_elide: Use CK_CC_INLINE instead of inline.
9 years ago
Olivier Houchard
37d94f4f4e
ck_pr/arm : Add load, store and CAS for double.
9 years ago
Michael Haberler
118cc8eae8
configure: detect git SHA, export as string CK_GIT_SHA in ck_md.h
...
this helps correlating tests by other people
9 years ago
Michael Haberler
ce7d26aad4
ck_mg.h: provide printable version tag as CK_VERSION
9 years ago
Olivier Houchard
c0c0b19716
configure: Add --platform and --use-cc-builtins
...
--platform let you set the platform, instead of relying on uname -m
--use-cc-builtins force the usage of gcc atomic builtins, instead of using the one provided by CK.
9 years ago
Michael Haberler
abc8e871af
arm/c++: cast arguments using CK_CPP_CAST
9 years ago
Michael Haberler
9911e46c7d
x86_64/c++: cast arguments using CK_CPP_CAST
9 years ago
Michael Haberler
a9005e55f1
c++: introduce CK_CPP_CAST to static_cast arguments
9 years ago
Olivier Houchard
d2ee99b7f4
ck_pr/arm : Tell the compiler to which "1" he should jump to.
9 years ago
Olivier Houchard
576e65fc74
ck_ht: Fallback to use 32bits values when 64bits load/store isn't supported.
...
That way we can use ck_ht on i386.
9 years ago
Samy Al Bahra
f6f02e8585
Merge pull request #54 from mhaberler/limits
...
ck_limits.h: assure UINT*_MAX ff are available in-kernel
9 years ago
Samy Al Bahra
35f9ff1ede
Merge pull request #53 from mhaberler/typeof
...
CK_PR_ACCESS: use __typeof__ instead of typeof
9 years ago
Samy Al Bahra
b039de2f2f
ck_cc: Add parenthesis to make default easier.
9 years ago
Michael Haberler
383eb139ff
ck_limits.h: assure UINT*_MAX ff are available in-kernel
...
this should work back to at least 3.5 kernels
9 years ago
Michael Haberler
ac1c170b29
CK_PR_ACCESS: use __typeof__ instead of typeof
...
this makes ck_pr.h safe to include in c++ with -std=c++11
9 years ago
Olivier Houchard
1c3501a524
ck_pr/arm : Don't try to build the 64bits version of CAS for armv6 either.
9 years ago
Olivier Houchard
005c06f9e2
ck_pr/arm: There's no need to force the use of r4, r5 and r6 anymore, this should fix issue #50
9 years ago
Olivier Houchard
b002ed5f11
ck_pr/arm: Don't use ldrexd/strexd if we're building for armv6.
9 years ago
Olivier Houchard
b202a8224a
ck_pr/arm: Rename ck_pr_[load|store]_64 to ck_pr_md_[load|store]_64, as it should have been done.
9 years ago
Emilio G. Cota
3f48bc39fb
ck_sequence: relax sequence increment from atomic to regular store
...
The atomicity of the sequence number's increment is unnecessary, since
there should be only one writer at any given time. Fix it by changing
it for a regular increment + store.
Signed-off-by: Emilio G. Cota <cota@braap.org>
10 years ago
Samy Al Bahra
3971541783
ppc: lwsync is the right thing for WB-memory.
...
We will expose a flag to enable isync.
10 years ago
Samy Al Bahra
41c1080f43
ck_bytelock: Fall-back to store_8 if FAS is unavailable.
10 years ago