This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[PATCH 0/5] Add generic atomic.h implementation
- From: Will Newton <will dot newton at linaro dot org>
- To: libc-alpha at sourceware dot org
- Date: Fri, 17 Oct 2014 16:31:17 +0100
- Subject: [PATCH 0/5] Add generic atomic.h implementation
- Authentication-results: sourceware.org; auth=none
This patch series adds a generic implementation of atomic.h that uses
modern GCC intrinsics to implement a range of atomic_* and catomic_*
functions in a reasonably efficient manner.
The generic header is based on the AArch64 implementation so there is
little change to the generated code on or performance on that architecture.
The ARM code is improved somewhat due to the richer array of atomicity
intrinsics used and sees reduced code size and an improvement on the malloc
benchmark.
The first patch adds a malloc microbenchmark which this time includes
the threaded variants of the benchmark. I have included these this time
as the benchmark results are also interesting in threaded scenarios
once you start implementing single-thread optimizations for catomic_*.
The second patch adds the generic atomic.h header and the third adds
an atomic_types.h header which should allow reducing repetition in
the various port atomic.h headers, whether they use the new generic
implementation for atomicity or not. If accepted a future series would
carry out this consolidation.
The fourth and fifth patches convert the AArch64 and ARM ports
respectively to use the new generic headers.
Will Newton (5):
benchtests: Add malloc microbenchmark
sysdeps/generic/atomic.h: Add a generic atomic header
sysdeps/generic/atomic_types.h: Add generic atomic types header
sysdeps/aarch64/bits/atomic.h: Switch to generic implementation
sysdeps/arm/bits/atomic.h: Switch to generic implementation
benchtests/Makefile | 20 ++-
benchtests/bench-malloc-thread.c | 302 +++++++++++++++++++++++++++++++++++++++
sysdeps/aarch64/bits/atomic.h | 151 +-------------------
sysdeps/arm/bits/atomic.h | 99 ++-----------
sysdeps/generic/atomic.h | 240 +++++++++++++++++++++++++++++++
sysdeps/generic/atomic_types.h | 44 ++++++
6 files changed, 614 insertions(+), 242 deletions(-)
create mode 100644 benchtests/bench-malloc-thread.c
create mode 100644 sysdeps/generic/atomic.h
create mode 100644 sysdeps/generic/atomic_types.h
--
1.9.3