# vim: set sw=4 ts=4 et nu: # # spec file for package userspace-rcu # # Copyright (c) 2021 SUSE LLC # Copyright (c) 2012 Pascal Bleser # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed # upon. The license for this file, and modifications and additions to the # file, is the same license as for the pristine package itself (unless the # license for the pristine package is not an Open Source License, in which # case the license is the MIT License). An "Open Source License" is a # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. # Please submit bugfixes or comments via https://bugs.opensuse.org/ # %define soname 8 Name: userspace-rcu Version: 0.13.0 Release: 1.1 Summary: Userspace Read-Copy-Update Library License: GPL-2.0-or-later AND LGPL-2.1-or-later AND MIT AND GPL-3.0-or-later Group: System/Libraries URL: https://liburcu.org/ Source0: https://lttng.org/files/urcu/userspace-rcu-%{version}.tar.bz2 Source1: https://lttng.org/files/urcu/userspace-rcu-%{version}.tar.bz2.asc Source2: userspace-rcu.keyring Source99: baselibs.conf BuildRequires: gcc BuildRequires: glibc-devel BuildRequires: make BuildRequires: pkgconfig %description liburcu is a LGPLv2.1 userspace RCU (read-copy-update) library. This data synchronization library provides read-side access which scales linearly with the number of cores. It does so by allowing multiples copies of a given data structure to live at the same time, and by monitoring the data structure accesses to detect grace periods after which memory reclamation is possible. %package -n liburcu%{soname} Summary: Userspace Read-Copy-Update Library Group: System/Libraries %description -n liburcu%{soname} liburcu is a LGPLv2.1 userspace RCU (read-copy-update) library. This data synchronization library provides read-side access which scales linearly with the number of cores. It does so by allowing multiples copies of a given data structure to live at the same time, and by monitoring the data structure accesses to detect grace periods after which memory reclamation is possible. Accesses to detect grace periods after which memory reclamation is possible. %package -n liburcu-devel Summary: Userspace Read-Copy-Update Library Group: Development/Libraries/C and C++ Requires: liburcu%{soname} = %{version} %description -n liburcu-devel liburcu is a LGPLv2.1 userspace RCU (read-copy-update) library. This data synchronization library provides read-side access which scales linearly with the number of cores. It does so by allowing multiples copies of a given data structure to live at the same time, and by monitoring the data structure accesses to detect grace periods after which memory reclamation is possible. %prep %setup -q %build %configure --disable-silent-rules --disable-static %make_build %install %make_install rm -rf "%{buildroot}%{_datadir}/doc" find %{buildroot} -type f -name "*.la" -delete -print %post -n liburcu%{soname} -p /sbin/ldconfig %postun -n liburcu%{soname} -p /sbin/ldconfig %files -n liburcu%{soname} %license LICENSE %doc ChangeLog README.md *.txt doc/*.md %{_libdir}/liburcu.so.%{soname} %{_libdir}/liburcu.so.%{soname}.* %{_libdir}/liburcu-bp.so.%{soname} %{_libdir}/liburcu-bp.so.%{soname}.* %{_libdir}/liburcu-cds.so.%{soname} %{_libdir}/liburcu-cds.so.%{soname}.* %{_libdir}/liburcu-common.so.%{soname} %{_libdir}/liburcu-common.so.%{soname}.* %{_libdir}/liburcu-mb.so.%{soname} %{_libdir}/liburcu-mb.so.%{soname}.* %{_libdir}/liburcu-memb.so.%{soname} %{_libdir}/liburcu-memb.so.%{soname}.* %{_libdir}/liburcu-qsbr.so.%{soname} %{_libdir}/liburcu-qsbr.so.%{soname}.* %{_libdir}/liburcu-signal.so.%{soname} %{_libdir}/liburcu-signal.so.%{soname}.* %files -n liburcu-devel %{_includedir}/urcu*.h %{_includedir}/urcu %{_libdir}/liburcu.so %{_libdir}/liburcu-bp.so %{_libdir}/liburcu-cds.so %{_libdir}/liburcu-common.so %{_libdir}/liburcu-mb.so %{_libdir}/liburcu-memb.so %{_libdir}/liburcu-qsbr.so %{_libdir}/liburcu-signal.so %{_libdir}/pkgconfig/liburcu.pc %{_libdir}/pkgconfig/liburcu-bp.pc %{_libdir}/pkgconfig/liburcu-cds.pc %{_libdir}/pkgconfig/liburcu-mb.pc %{_libdir}/pkgconfig/liburcu-qsbr.pc %{_libdir}/pkgconfig/liburcu-signal.pc %changelog * Wed Dec 15 2021 Dirk Müller - update to 0.13.0: * The Userspace RCU 0.13 release is mostly a library soname version bump to address an ABI incompatibility between the 0.10 and { 0.11, 0.12 } releases. see https://lists.lttng.org/pipermail/lttng-dev/2021-June/030023.html * Mon Mar 8 2021 Dirk Müller - update to 0.12.2: * fix: exclude clang from GCC version blacklists * aarch64: blacklist gcc prior to 5.1 * Fix: configure: support Autoconf 2.70 * fix: bump tests thread limit to 4096 * cleanup: Improve wording of CONFIG_RCU_DEBUG description * fix: explicitly include urcu/config.h in files using CONFIG_RCU_ defines * Fix typo in README.md * fix: add -lurcu-common to pkg-config libs for each flavor * call_rcu: Fix race between rcu_barrier() and call_rcu_data_free() * Tue Aug 25 2020 Dirk Mueller - update to 0.12.1: * Fix: tls-compat.h exposes compiler-dependent public configuration * Fix: tap array subscript has type char warning * tls-compat.h: introduce DEFINE_URCU_TLS_INIT * Use _umtx_op for futex on FreeBSD * Add FreeBSD, DragonFly to syscall-compat.h * urcu-bp: perform thread registration on urcu_bp_register_thread * Require automake >= 1.12 * cds_lfht_is_node_deleted parameter can be marked const * Fix: provide errno as argument to urcu_die() * Fix: rculfhash worker needs to unblock to SIGRCU * Cleanup: test_perthreadlock_timing: handle pthread mutex errors * Fix: SONAME bump to 6.1.0 * Cleanup: remove unused variable from configure.ac check * Fix: urcu/futex.h: users of struct timespec should include time.h * Bump library version to 6:0:1 * Cleanup: update code layout to fix old gcc warning * Fix: typo CPPLAGS in examples Makefile * Harmonize pprint macro across projects * Check for TLS support after CC detection * Update macros from the autotools archive * tap-driver.sh: flush stdout after each test result * Update dead link in lgpl-relicensing.txt * Add multiflavor compat identifiers * Cleanup: missing sign compare fixes * Cleanup: enable signed/unsigned compare compiler warning * Cleanup: compiler warning on 32-bit architectures * config.h.in: rename CONFIG_RCU_MULTIFLAVOR to CONFIG_RCU_HAVE_MULTIFLAVOR * rculfhash: implement iterator debugging config option * Fix: examples silent rules on Solaris * Add missing fall through annotations * Fix: symbol aliases with TLS compat * Port: no symbols aliases on MacOS * Add -Wextra to CFLAGS * Add silent mode to examples Makefiles * doc: update examples to API changes * test multiflavor single compile unit * Update README following API changes * Use new header locations for includes from urcu code * Update call-rcu.h and defer.h comments and include guards * rculfqueue.h: do not include urcu-call-rcu.h * rculfhash: support use with multiple flavors per compile unit * rculfhash: do not include urcu-call-rcu.h from public API * Refactor liburcu to support many flavors per compile unit * Fix: only wait if work queue is empty in real-time mode * Fix: don't wait after completion of a work queue job batch * Fix: don't wait after completion of job batch if work queue is empty * Fix: workqueue: struct urcu_work vs rcu_head mixup * Cleanup: workqueue: update comments referring to call-rcu * Fix: mixup between URCU_WORKQUEUE_RT and URCU_CALL_RCU_RT * test_rwlock: Add per-thread count to verbose output * Add *.exe to gitignore for Cygwin * Fix: pthread_rwlock initialization on Cygwin * Fix: compat_futex_noasync on Cygwin * wfcqueue: allow defining CDS_WFCQ_WAIT_SLEEP to override `poll' * Update documentation for call_rcu before/after fork * Add support for the RISC-V architecture * Tests: Add tap-driver.sh for automake < 1.12 * Tests: Replace prove by autotools tap runner * liburcu-bp: Use membarrier private expedited when available * liburcu: Use membarrier private expedited when available * rculfhash: improve error handling of mmap backend * Fix: don't use overlapping mmap mappings on Cygwin * Tests fix: errors in shell scripts * Revert "Use initial-exec tls model" * Use initial-exec tls model * Fix: don't use membarrier SHARED syscall command in liburcu-bp * Tests fix: add missing Cygwin thread id * Fix: assignment from incompatible pointer type warnings * Tests fix: unused variable warnings * Fix: add missing m68k headers to dist * Wed Nov 29 2017 dimstar@opensuse.org - Add baselibs.conf: create liburcu6-32bit package as a dependency to liblttng-ust0-32bit. * Fri Sep 1 2017 tonyj@suse.com - Update to version 0.10.0 for SLE15 (bsc#1055683) Drop patch: userspace-rcu-aarch64.patch (upstream v0.9.0~99) Drop patch: userspace-rcu-ppc64le.patch (upstream v0.9.0~24) Adjust library soname to 6 Update keyring * Tue Mar 15 2016 dvaleev@suse.com - userspace-rcu-ppc64le.patch use ppc for ppc64le http://git.lttng.org/?p=userspace-rcu.git;a=commit;h=61126bd9c901fa403315db71d8d5351d716717cb * Tue Sep 29 2015 dmueller@suse.com - remove dependency on gpg-offline, is done by source validator - drop userspace-rcu-ppc64le.patch, included in userspace-rcu-aarch64.patch * Mon Aug 31 2015 dmueller@suse.com - add userspace-rcu-aarch64.patch (fate#318370) enables build for aarch64 * Tue Jul 28 2015 tonyj@suse.com - Update to version 0.8,7 (FATE#319273) Changelog 0.8.7: * Fix: deadlock when thread join is issued in read-side C.S. * Fix: rename RCU_DEBUG to DEBUG_RCU in urcu-qsbr.h * Mark braced-groups within expressions with __extension__ * Fix: compat_futex_noasync race condition * Fix: documentation: urcu-pointer.h: s/rcu_dereference_pointer/rcu_dereference/ * Fix: call rcu should call internal RCU API * Mon Nov 24 2014 mq@suse.cz - updated to 0.8.6: * Fix: silence gcc -Wextra warning * compiler: use __GNUC__ instead of the undefined __GNUC_MAJOR__ * Fix: lfstack reversed empty/non-empty return value * lfstack: fix: add missing __cds_lfs_init * Fix: preserve example files' timestamps when copying * rculfhash: remove duplicated code * rculfhash: handle pthread_create failures * rculfhash: fall back to single-threaded resize on calloc failure * x86: drop extra semi-colon in caa_cpu_relax * Fix: Use after free in rcu_barrier() * Fix: rcu_barrier(): uninitialized futex field * call_rcu threads should clear their PAUSED flag when they unpause * Fix: bring back dummy rcu_bp_exit symbol * Fri Mar 28 2014 pgajdos@suse.com - updated to 0.8.4: * Fix: move wait loop increment before first conditional block * Fix: high cpu usage in synchronize_rcu with long RCU read-side C.S. * Fix: out of tree build: doc/examples * Fix: out of tree build tests/common * tests/unit: use lib rather than source * automake: Rename INCLUDES to AM_CPPFLAGS (new name) * tests regressions: use lib rather than recompile from source * tests: use common lib rather than recompile compat sources * urcu tests: use lib rather than compile from source * urcu mb tests: use lib rather than recompile from source * urcu signal tests: use library rather than recompile source * tests: move yield debug to common test library * tests urcu bp: use lib rather than recompile source * test_urcu_defer: link on urcu lib rather than recompile source * tests/benchmark: use urcu qsbr lib rather than recompile from source * Pass the CC variable to the example Makefiles * Fix: urcu-bp interaction with threads vs constructors/destructors * Fix undefined NULL pointer arithmetic * Blacklist ARM gcc 4.8.0, 4.8.1, 4.8.2 * rculfhash: document max_nr_buckets = 0 * Tue Dec 3 2013 dvaleev@suse.com - Fix build on ppc64le platform - added patches: * userspace-rcu-ppc64le.patch * Tue Nov 26 2013 pgajdos@suse.com - updated to 0.8.1: * tls-compat: fix comment typo * Keep ABI compatible with already compiled LGPL applications * Fix: tls-compat multi-lib conflict * Use cross compiler for doc examples * gcc warning fixes: -Wsign-compare and -Wextra * Fix: urcu-qsbr: reversed logic on RCU_DEBUG * Fix: urcu-bp segfault in glibc pthread_kill() * Fix urcu-bp: don't move registry * Fix: compat futex duplicated lock and completion * Fix: i386 compat code duplicated mutex instances * Fix: urcu-bp: Bulletproof RCU arena resize bug * Fix: test_mutex.c uninitialized mutex * Mon Sep 9 2013 pgajdos@suse.com - updated to 0.8.0: * Fix: hash table growth (for small tables) should be limited * Fix: doc/examples cross-build * Introduce URCU_INLINE_SMALL_FUNCTIONS * etc., see ChangeLog - gpg-offline * Wed Mar 27 2013 pgajdos@suse.com - updated to 0.7.6: * Discourage use of pthread_atfork() for call_rcu handlers * Fix call_rcu fork handling * test: fork handling * Fix TLS detection: test with linker, add --disable-compiler-tls * Cleanup: cast pthread_self() return value to unsigned long * Fallback mechanism not working on platform where TLS is unsupported * Tue Nov 20 2012 pgajdos@suse.com - updated to 0.7.5: * 19cf3ae Fix: call_rcu list corruption on teardown * Ensure that read-side functions meet 10-line LGPL criterion * tls-compat.h: document sigaltstack(2) limitation * urcu: add notice to URCU_TLS() for it is not strictly async-signal-safe * Document sigaltstack(2) limitation * Documentation: update LICENSE file * Wed Aug 29 2012 cfarrell@suse.com - license update: LGPL-2.1+ and MIT and GPL-2.0+ See LICENSE file * Tue Aug 28 2012 pascal.bleser@opensuse.org - update to 0.7.4: * Fix: rculfhash should be offline while waiting for resize to complete * urcu: move busy-wait code and name it ___cds_wfq_node_sync_next() * urcu: fix compat_futex_noasync() * urcu: add hint to DEFINE_URCU_TLS() for compound types * Fix: CAA_BUILD_BUG_ON should refer to CAA_BUILD_BUG_ON_ZERO * Add MIPS support * Fix inappropriate lib behavior: don't call exit() * Fix: re-enable compatibility with autoconf < 2.64 * Fix c99 compatibility: use __asm__ and __volatile__ in public headers * Fix c99 compatibility: use __typeof__ instead of typeof in public headers - changes from 0.7.1: * fix: uatomic_set return value compile fix for non-x86 arch - changes from 0.7.0: * Update return value of "set" operations * rculfhash: document implied memory barriers * rculfhash: Ensure future-proof memory barrier semantic consistency * uatomic: add memory barrier API for and/or/add/sub/inc/sub * rculfhash: fix: race between replace and del operations * rculfhash: replace unneeded rcu_dereference by CMM_LOAD_SHARED * rculfhash: check malloc NULL pointer * Fix uatomic sign cast * Remove unused jhash.h file * RCU lock-free hash table: implement cds_lfht_is_node_deleted() * rculfhash: remove an invocation of bit_reverse_ulong() when adding * cds_lfht_replace: add checks for old/new node hash/value match * Add missing REMOVAL_OWNER_FLAG comment to cds_lfht_node comment * _cds_lfht_del is not used for buckets anymore, remove parameter * rculfhash: Relax atomicity guarantees required by removal operation * simplify the deletion for bucket node * Cleanup DEFINE_RCU_FLAVOR() * Add cds_lfht_ prefix to fls_ulong, get_count_order_ulong, get_count_order_u32 * Merge RCU Lock-Free Resizable Hash Table * Wed May 23 2012 jengelh@inai.de - Exclusively ship shared library - Strip redundant tags/sections from specfile * Thu Mar 29 2012 pascal.bleser@opensuse.org - initial version (0.6.7)