head 1.11; access; symbols pkgsrc-2026Q1:1.11.0.24 pkgsrc-2026Q1-base:1.11 pkgsrc-2025Q4:1.11.0.22 pkgsrc-2025Q4-base:1.11 pkgsrc-2025Q3:1.11.0.20 pkgsrc-2025Q3-base:1.11 pkgsrc-2025Q2:1.11.0.18 pkgsrc-2025Q2-base:1.11 pkgsrc-2025Q1:1.11.0.16 pkgsrc-2025Q1-base:1.11 pkgsrc-2024Q4:1.11.0.14 pkgsrc-2024Q4-base:1.11 pkgsrc-2024Q3:1.11.0.12 pkgsrc-2024Q3-base:1.11 pkgsrc-2024Q2:1.11.0.10 pkgsrc-2024Q2-base:1.11 pkgsrc-2024Q1:1.11.0.8 pkgsrc-2024Q1-base:1.11 pkgsrc-2023Q4:1.11.0.6 pkgsrc-2023Q4-base:1.11 pkgsrc-2023Q3:1.11.0.4 pkgsrc-2023Q3-base:1.11 pkgsrc-2023Q2:1.11.0.2 pkgsrc-2023Q2-base:1.11 pkgsrc-2023Q1:1.10.0.40 pkgsrc-2023Q1-base:1.10 pkgsrc-2022Q4:1.10.0.38 pkgsrc-2022Q4-base:1.10 pkgsrc-2022Q3:1.10.0.36 pkgsrc-2022Q3-base:1.10 pkgsrc-2022Q2:1.10.0.34 pkgsrc-2022Q2-base:1.10 pkgsrc-2022Q1:1.10.0.32 pkgsrc-2022Q1-base:1.10 pkgsrc-2021Q4:1.10.0.30 pkgsrc-2021Q4-base:1.10 pkgsrc-2021Q3:1.10.0.28 pkgsrc-2021Q3-base:1.10 pkgsrc-2021Q2:1.10.0.26 pkgsrc-2021Q2-base:1.10 pkgsrc-2021Q1:1.10.0.24 pkgsrc-2021Q1-base:1.10 pkgsrc-2020Q4:1.10.0.22 pkgsrc-2020Q4-base:1.10 pkgsrc-2020Q3:1.10.0.20 pkgsrc-2020Q3-base:1.10 pkgsrc-2020Q2:1.10.0.18 pkgsrc-2020Q2-base:1.10 pkgsrc-2020Q1:1.10.0.14 pkgsrc-2020Q1-base:1.10 pkgsrc-2019Q4:1.10.0.16 pkgsrc-2019Q4-base:1.10 pkgsrc-2019Q3:1.10.0.12 pkgsrc-2019Q3-base:1.10 pkgsrc-2019Q2:1.10.0.10 pkgsrc-2019Q2-base:1.10 pkgsrc-2019Q1:1.10.0.8 pkgsrc-2019Q1-base:1.10 pkgsrc-2018Q4:1.10.0.6 pkgsrc-2018Q4-base:1.10 pkgsrc-2018Q3:1.10.0.4 pkgsrc-2018Q3-base:1.10 pkgsrc-2018Q2:1.10.0.2 pkgsrc-2018Q2-base:1.10 pkgsrc-2018Q1:1.9.0.10 pkgsrc-2018Q1-base:1.9 pkgsrc-2017Q4:1.9.0.8 pkgsrc-2017Q4-base:1.9 pkgsrc-2017Q3:1.9.0.6 pkgsrc-2017Q3-base:1.9 pkgsrc-2017Q2:1.9.0.2 pkgsrc-2017Q2-base:1.9 pkgsrc-2017Q1:1.7.0.24 pkgsrc-2017Q1-base:1.7 pkgsrc-2016Q4:1.7.0.22 pkgsrc-2016Q4-base:1.7 pkgsrc-2016Q3:1.7.0.20 pkgsrc-2016Q3-base:1.7 pkgsrc-2016Q2:1.7.0.18 pkgsrc-2016Q2-base:1.7 pkgsrc-2016Q1:1.7.0.16 pkgsrc-2016Q1-base:1.7 pkgsrc-2015Q4:1.7.0.14 pkgsrc-2015Q4-base:1.7 pkgsrc-2015Q3:1.7.0.12 pkgsrc-2015Q3-base:1.7 pkgsrc-2015Q2:1.7.0.10 pkgsrc-2015Q2-base:1.7 pkgsrc-2015Q1:1.7.0.8 pkgsrc-2015Q1-base:1.7 pkgsrc-2014Q4:1.7.0.6 pkgsrc-2014Q4-base:1.7 pkgsrc-2014Q3:1.7.0.4 pkgsrc-2014Q3-base:1.7 pkgsrc-2014Q2:1.7.0.2 pkgsrc-2014Q2-base:1.7 pkgsrc-2014Q1:1.6.0.20 pkgsrc-2014Q1-base:1.6 pkgsrc-2013Q4:1.6.0.18 pkgsrc-2013Q4-base:1.6 pkgsrc-2013Q3:1.6.0.16 pkgsrc-2013Q3-base:1.6 pkgsrc-2013Q2:1.6.0.14 pkgsrc-2013Q2-base:1.6 pkgsrc-2013Q1:1.6.0.12 pkgsrc-2013Q1-base:1.6 pkgsrc-2012Q4:1.6.0.10 pkgsrc-2012Q4-base:1.6 pkgsrc-2012Q3:1.6.0.8 pkgsrc-2012Q3-base:1.6 pkgsrc-2012Q2:1.6.0.6 pkgsrc-2012Q2-base:1.6 pkgsrc-2012Q1:1.6.0.4 pkgsrc-2012Q1-base:1.6 pkgsrc-2011Q4:1.6.0.2 pkgsrc-2011Q4-base:1.6 pkgsrc-2011Q3:1.5.0.20 pkgsrc-2011Q3-base:1.5 pkgsrc-2011Q2:1.5.0.18 pkgsrc-2011Q2-base:1.5 pkgsrc-2011Q1:1.5.0.16 pkgsrc-2011Q1-base:1.5 pkgsrc-2010Q4:1.5.0.14 pkgsrc-2010Q4-base:1.5 pkgsrc-2010Q3:1.5.0.12 pkgsrc-2010Q3-base:1.5 pkgsrc-2010Q2:1.5.0.10 pkgsrc-2010Q2-base:1.5 pkgsrc-2010Q1:1.5.0.8 pkgsrc-2010Q1-base:1.5 pkgsrc-2009Q4:1.5.0.6 pkgsrc-2009Q4-base:1.5 pkgsrc-2009Q3:1.5.0.4 pkgsrc-2009Q3-base:1.5 pkgsrc-2009Q2:1.5.0.2 pkgsrc-2009Q2-base:1.5 pkgsrc-2009Q1:1.4.0.2 pkgsrc-2009Q1-base:1.4 pkgsrc-2008Q4:1.2.0.2 pkgsrc-2008Q4-base:1.2 pkgsrc-base:1.1.1.1 TNF:1.1.1; locks; strict; comment @# @; 1.11 date 2023.05.08.09.34.40; author wiz; state Exp; branches; next 1.10; commitid 7AQjDhz15UhsR8oE; 1.10 date 2018.04.17.05.30.30; author wiz; state Exp; branches; next 1.9; commitid 8CyInqNVbm9BSKyA; 1.9 date 2017.05.29.12.55.10; author wiz; state Exp; branches; next 1.8; commitid O3O8JuqLzpGQIhTz; 1.8 date 2017.05.18.20.37.03; author adam; state Exp; branches; next 1.7; commitid OB6NQq0le7fcDURz; 1.7 date 2014.04.16.11.21.32; author wiz; state Exp; branches; next 1.6; commitid teWXumMgnylCOTwx; 1.6 date 2011.10.04.18.15.29; author bsiegert; state Exp; branches; next 1.5; 1.5 date 2009.06.14.17.48.51; author joerg; state Exp; branches; next 1.4; 1.4 date 2009.01.31.20.05.57; author sketch; state Exp; branches; next 1.3; 1.3 date 2009.01.27.20.26.01; author sketch; state Exp; branches; next 1.2; 1.2 date 2008.12.22.02.46.52; author jmcneill; state Exp; branches; next 1.1; 1.1 date 2008.10.25.00.32.23; author bjs; state Exp; branches 1.1.1.1; next ; 1.1.1.1 date 2008.10.25.00.32.23; author bjs; state Exp; branches; next ; desc @@ 1.11 log @libatomic_ops: update to 7.8.0. == [7.8.0] 2023-03-26 == * Add AUTHORS file to the list of installed documentation * Add goal to Makefile.msft to build all tests but not execute them * Allocate marks[] dynamically and report all found errors in test_stack * Always export stack_init/push_release/pop_acquire from atomic_ops_gpl * Always use 'mfence' for nop_full if target CPU supports SSE2 (MS VC/x86) * Avoid 'cast increases required alignment' warnings in atomic_ops_malloc.c * Avoid breaking strict-aliasing rules in test_malloc and test_stack * Avoid code duplication in AO_stack_push_explicit_aux_release * Better document test_stack internals * Build atomic_ops.lib by Makefile.msft (MS VC) * Build test object and executable files in tests folder (MS VC) * Define AO_stack_t uniformly * Define double_compare_and_swap_full if MS VS 2017+ (x86) * Do not expose AO_REAL_HEAD/NEXT_PTR implementation in header by default * Document config macros in README_win32 and remove them from configure * Eliminate 'function is never used' cppcheck warning for AO_stack_init * Enforce most strict level of compiler warnings (MS VC) * Ensure atomic_ops.c global symbols are always declared as extern 'C' * Explicitly outline symbols exported in AO shared libraries with AO_API * Hide AO_free_list symbol * Implement AO_stack_init using memset * Implement AO_test_and_set using InterlockedExchange8 (MS VC) * Implement and/or/xor for AO_t, short and int types (MS VC) * Implement nf/acq/rel variants of primitives on Windows RT (MS VC) * Mention MIT near core library licensing terms in LICENSE file * Move all README_*.txt and license files to the top folder * Move all non-double intrinsic-based primitives to msftc/common32_defs.h * Move gcc-4/alpha workaround outside AO_stack_pop_explicit_aux_acquire * New AO_stack_is_lock_free API function * New configure option (--disable-gpl) to skip building of libatomic_ops_gpl * Print message of almost-lock-free implementation in test_stack if used * Refine LICENSE and README about code parts covered by MIT and GPL-2.0 * Refine copyright terms in GPL source files * Reformat atomic_ops_stack.c/h files * Remove 'lib' prefix for atomic_ops_gpl.lib in Makefile.msft * Remove redundant assert in AO_stack_pop_explicit_aux_acquire * Remove redundant cast to AO_t in lock-free AO_stack_pop_acquire * Rename LICENSING.txt to LICENSE file * Rename VERBOSE macro to VERBOSE_STACK in test_stack (refactoring) * Rename fetch_and_add to fetch_then_add in test_stack (refactoring) * Replace obsolete AC_HELP_STRING with AS_HELP_STRING in configure * Replace obsolete AC_TRY_COMPILE with AC_COMPILE_IFELSE in configure * Split test_stack main into several functions (refactoring) * Support Elbrus 2000 (gcc/e2k) * Support build with CMake * Support double-wide CAS on armv7+ and UWP/arm64 (MS VC) * Support test_atomic with MS build w/o the need to run GNU make first * Use GCC atomic intrinsics for SPARC * Use builtin_expect in AO_stack_push_explicit_aux_release @ text @@@comment $NetBSD$ include/atomic_ops.h include/atomic_ops/ao_version.h include/atomic_ops/generalize-arithm.h include/atomic_ops/generalize-small.h include/atomic_ops/generalize.h include/atomic_ops/sysdeps/all_acquire_release_volatile.h include/atomic_ops/sysdeps/all_aligned_atomic_load_store.h include/atomic_ops/sysdeps/all_atomic_load_store.h include/atomic_ops/sysdeps/all_atomic_only_load.h include/atomic_ops/sysdeps/ao_t_is_int.h include/atomic_ops/sysdeps/armcc/arm_v6.h include/atomic_ops/sysdeps/emul_cas.h include/atomic_ops/sysdeps/gcc/aarch64.h include/atomic_ops/sysdeps/gcc/alpha.h include/atomic_ops/sysdeps/gcc/arm.h include/atomic_ops/sysdeps/gcc/avr32.h include/atomic_ops/sysdeps/gcc/cris.h include/atomic_ops/sysdeps/gcc/e2k.h include/atomic_ops/sysdeps/gcc/generic-arithm.h include/atomic_ops/sysdeps/gcc/generic-small.h include/atomic_ops/sysdeps/gcc/generic.h include/atomic_ops/sysdeps/gcc/hexagon.h include/atomic_ops/sysdeps/gcc/hppa.h include/atomic_ops/sysdeps/gcc/ia64.h include/atomic_ops/sysdeps/gcc/m68k.h include/atomic_ops/sysdeps/gcc/mips.h include/atomic_ops/sysdeps/gcc/powerpc.h include/atomic_ops/sysdeps/gcc/riscv.h include/atomic_ops/sysdeps/gcc/s390.h include/atomic_ops/sysdeps/gcc/sh.h include/atomic_ops/sysdeps/gcc/sparc.h include/atomic_ops/sysdeps/gcc/tile.h include/atomic_ops/sysdeps/gcc/x86.h include/atomic_ops/sysdeps/generic_pthread.h include/atomic_ops/sysdeps/hpc/hppa.h include/atomic_ops/sysdeps/hpc/ia64.h include/atomic_ops/sysdeps/ibmc/powerpc.h include/atomic_ops/sysdeps/icc/ia64.h include/atomic_ops/sysdeps/loadstore/acquire_release_volatile.h include/atomic_ops/sysdeps/loadstore/atomic_load.h include/atomic_ops/sysdeps/loadstore/atomic_store.h include/atomic_ops/sysdeps/loadstore/char_acquire_release_volatile.h include/atomic_ops/sysdeps/loadstore/char_atomic_load.h include/atomic_ops/sysdeps/loadstore/char_atomic_store.h include/atomic_ops/sysdeps/loadstore/double_atomic_load_store.h include/atomic_ops/sysdeps/loadstore/int_acquire_release_volatile.h include/atomic_ops/sysdeps/loadstore/int_atomic_load.h include/atomic_ops/sysdeps/loadstore/int_atomic_store.h include/atomic_ops/sysdeps/loadstore/ordered_loads_only.h include/atomic_ops/sysdeps/loadstore/ordered_stores_only.h include/atomic_ops/sysdeps/loadstore/short_acquire_release_volatile.h include/atomic_ops/sysdeps/loadstore/short_atomic_load.h include/atomic_ops/sysdeps/loadstore/short_atomic_store.h include/atomic_ops/sysdeps/msftc/arm.h include/atomic_ops/sysdeps/msftc/arm64.h include/atomic_ops/sysdeps/msftc/common32_defs.h include/atomic_ops/sysdeps/msftc/x86.h include/atomic_ops/sysdeps/msftc/x86_64.h include/atomic_ops/sysdeps/ordered.h include/atomic_ops/sysdeps/ordered_except_wr.h include/atomic_ops/sysdeps/read_ordered.h include/atomic_ops/sysdeps/standard_ao_double_t.h include/atomic_ops/sysdeps/sunc/sparc.h include/atomic_ops/sysdeps/sunc/x86.h include/atomic_ops/sysdeps/test_and_set_t_is_ao_t.h include/atomic_ops/sysdeps/test_and_set_t_is_char.h include/atomic_ops_malloc.h include/atomic_ops_stack.h lib/libatomic_ops.la lib/libatomic_ops_gpl.la lib/pkgconfig/atomic_ops.pc share/doc/libatomic_ops/AUTHORS share/doc/libatomic_ops/COPYING share/doc/libatomic_ops/ChangeLog share/doc/libatomic_ops/LICENSE share/doc/libatomic_ops/README.md share/doc/libatomic_ops/README_details.txt share/doc/libatomic_ops/README_malloc.txt share/doc/libatomic_ops/README_stack.txt share/doc/libatomic_ops/README_win32.txt @ 1.10 log @libatomic_ops: update to 7.6.4. == [7.6.4] 2018-03-27 == * Add RISC-V support * Convert atomic_ops_malloc.c and tests to valid C++ code * Eliminate 'function is never used' cppcheck warning for load_before_cas * Eliminate 'using argument that points at uninitialized var' cppcheck error * Fix 'AO_pt_lock undefined' error if cross-compiling manually (MinGW) * Fix public headers inclusion from clients C++ code * Remove gcc/nios2.h file (include gcc/generic.h directly for nios2) * Support MIPS rel6 @ text @d19 1 d56 1 d73 1 d75 2 a76 1 share/doc/libatomic_ops/LICENSING.txt @ 1.9 log @Updated libatomic_ops to 7.6.0. == [7.6.0] 2017-05-19 == * Add *_and/or/xor* and *_[fetch_]compare_and_swap* tests to test_atomic * Add asm-based and/or/xor implementation for char/short/int (gcc/x86) * Add asm-based char/short/int CAS implementation for gcc/x86[_64] * Add configure '--disable-atomic-intrinsics' option * Add dd_acquire_read case to test_atomic * Add initial nios2 architecture support * Add Makefile target (check-nolink) to compile all source without linking * Add Makefile target to run all tests without test-driver * Add test_atomic_generalized to Makefile and Makefile.msft * Allow alternate CC (CROSS_CC) for AC_TRY_COMPILE (configure) * Always define word-wide CAS for x86 (MS VC++ 8+) * Avoid atomic_compare_exchange_n if no __GCC_HAVE_SYNC_COMPARE_AND_SWAP_n * Avoid extra nop_full in stack_pop_acquire if atomic intrinsics used (x86) * Basic support of TILE-Gx and TILEPro CPUs * Code refactoring of int-wide primitives in gcc/x86.h * Define AO_TS_SET as __GCC_ATOMIC_TEST_AND_SET_TRUEVAL if applicable * Define CLANG/GNUC_PREREQ macros to check gcc/clang minimum version * Do not define print_list() unless used (tests) * Eliminate 'condition sizeof(long)>4 is always true' cppcheck style warning * Eliminate 'ISO C90 does not support long long' compiler pedantic warning * Eliminate 'scope of variable can be reduced' cppcheck warnings * Eliminate redundant lwsync 2nd call in CAS_full on fail (gcc/PowerPC) * Fix 'unknown attribute no_sanitize' compiler warning (clang prior to v3.8) * Fix 'variable new value is never used' cppcheck style warning * Fix missing double_compare_and_swap_dd_acquire_read * Fix reporting about missing and/or/xor_dd_acquire_read (test_atomic) * Hide AO_locks symbol * Implement AO_CLEAR using C11 atomic intrinsic (GCC) * Implement CAS_acquire/release/full using __atomic_compare_exchange_n (gcc) * Implement char and/or/xor and short CAS for msftc ARM and X86[_64] * Implement char CAS and char/short add for msftc X86[_64] (VS 2013+) * Implement compiler_barrier using C11 __atomic_signal_fence (GCC) * Implement int CAS/inc/dec for msftc/x86_64 * Implement short inc/dec directly for msftc ARM and X86[_64] * Initial ibmc/powerpc (xlc) support * New configure option (--enable-werror) to treat warnings as compiler errors * New macro AO_PREFER_BUILTIN_ATOMICS to rely on C11 atomics fully (AArch64) * Refine AO_nop_write comment for ARM big.LITTLE architecture * Refine configure messages when checking for compiler options * Refine documentation about _full memory ordering suffix * Refine README how to build the library source from the repository * Relax shareability domain for dmb st in AO_nop_write (ARM/AArch64) * Remove redundant include windows.h from headers (msftc/x86[_64]) * Remove spaces at EOLn in asm code * Report gcc/clang pedantic warnings (configure) * Support NaCl/arm * Suppress 'ISO C does not support __int128 type' GCC/Clang pedantic warning * Test store/CAS emulation explicitly * Update shared libraries version info to 2:0:1 * Use GCC atomic intrinsics for PowerPC 32/64 (GCC 4.8+ and clang 3.8+) * Use GCC atomic intrinsics for x86, x64, ARM, MIPS (gcc 4.9+, clang 3.5+) * Use generalized double-wide load/store if AO_PREFER_GENERALIZED (gcc/x86) * Workaround '#error' cppcheck error messages * Workaround 'condition always true', 'unused stored value' cppcheck warnings * Workaround 'function is never used' cppcheck style warnings * Workaround 'obsolescent ftime called' cppcheck style warning (POSIX) * Workaround 'overflow in pointer subtraction' cppcheck warning * Workaround 'shifting 32-bit value by 32 bits undefined' cppcheck warning * Workaround 'uninitialized memory use' code analyzer false warning (tests) * Workaround 'uninitialized variable' cppcheck error in hpc/hppa.h * Workaround 'value of macro is unknown' cppcheck information messages * Workaround a bug in double-wide intrinsics of Clang/x64 with ASan enabled * Workaround MSan warning about uninitialized data read by generalized store @ text @a26 1 include/atomic_ops/sysdeps/gcc/nios2.h d28 1 @ 1.8 log @== [7.4.6] 2017-05-18 == * Add assertion that double-wide CAS target is aligned (msftc/x86[_64]) * Add configure --enable-gcov option (enable code coverage analysis) * Code refactoring of gcc/powerpc.h to avoid code duplication * Eliminate 'cast to long from void*' compiler warning in test_atomic * Eliminate 'implicit declaration of close' warning in 'strict ANSI' mode * Eliminate 'missing braces around initializer' gcc warning (hppa) * Eliminate 'printf format specifies type void*' GCC pedantic warnings * Eliminate 'value shift followed by expansion' false code defect warning * Enable limited testing in Makefile.msft without Cygwin * Fix (delete) comment for AO_and_full (x86) * Fix block_all_signals compilation in 'strict ANSI' mode * Fix missing .exe for test filenames in Makefile (MinGW) * Fix missing printed value names (test_stack) * Implement fetch-CAS for s390[x] (gcc) * Move libraries version info to the beginning of Makefile.am * Refine documentation in Makefile.msft how to run all tests (MS VC) * Refine README about library downloading * Rename doc/README.txt to doc/README_details.txt * Support AIX/ppc (gcc) * Support CFLAGS_EXTRA to pass extra user-defined compiler flags (make) * Support n32 ABI for mips64 * Update shared libraries version info for 7.4.6+ (to 1:4:0) * Use 'inline code' format for commands in README.md * Use LLD and SCD instructions on mips64 * Workaround 'resource leak' false positives in AO_malloc, add_elements * Workaround 'uninitialized memory use' MemorySanitizer warning (test_atomic) Also, includes 7.2h changes @ text @d1 1 a1 1 @@comment $NetBSD: PLIST,v 1.7 2014/04/16 11:21:32 wiz Exp $ d27 1 d32 1 @ 1.7 log @Update to 7.4.0. == [7.4.0] 2013-11-17 == * Add and/or/xor entries to list_atomic (tests). * Add char/short/int/AO_double_t and dd_acquire cases to list_atomic (tests). * Add compile-time assertion for size of 'standard' AO_double_t. * Add double_store pthread-based implementation and tests. * Add generalized CAS primitives of char/short/int size. * Add generalized atomic and/or/xor operations for char/short/int types. * Add generalized fetch_and_add_acquire/release (for ARMv6+). * Add generic implementation of double_load primitives. * Add information about AO_ASSUME_VISTA to README_win32. * Add internal header containing only char/short/int/AO_t atomic loads. * Add load/store primitives generalization based on CAS. * Add lock-based implementation of char/short/int_fetch_compare_and_swap. * Add makefile rule to test list_atomic.template syntax (tests). * Add missing 'const' in aligned-atomic XSIZE_load implementation. * Add missing double_compare_and_swap to generalization. * Add missing generalization of no-barrier CAS in template. * Add negative double-CAS test cases to test_atomic_include (tests). * Add test_stack to Makefile.msft (tests). * Adjust fprintf arguments type matching specifier in test_stack (tests). * Adjust included filenames in atomic_ops_malloc and test_stack. * Adjust quotes in echo command of Makefile.msft (Win32). * Always use 'mfence' for nop_full if target CPU supports SSE2 (gcc/x86). * Better document configure THREADDLLIBS variable. * Cast away volatile on dereference in CAS-based generalization primitives. * Change policy regarding version numbers ("micro" part instead of "alpha"). * Convert README to Markdown format. * Define AO_NO_PTHREADS in configure if no pthreads (Win32 and VxWorks). * Define AO_int_X operations for ARM and avr32. * Define double-wide ordered loads/stores for x86. * Define int_and/or/xor primitives in ao_t_is_int header. * Define nop_full as compiler barrier for pre-ARMv6 single-core case. * Do not duplicate BUILT_SOURCES entries in nobase_private_HEADERS (Makefile). * Do not include standard_ao_double_t.h where double-CAS is unimplemented. * Do not report absence of meaningless nop, load and store in test_atomic. * Do not use deprecated AO_T and AO_TS_T (tests). * Eliminate 'missing initializer' warning for AO_stack_t value initializer. * Eliminate 64-bit compiler warnings in atomic_ops_malloc. * Eliminate arithmetic shifts in double-CAS (gcc/arm, msftc/x86). * Eliminate warning for fetch_and_add argument in test_atomic_include (tests). * Enable Makefile.msft for Win64. * Enable build using toolchain without pthreads. * Enable double_compare_and_swap for non-cpp code (msftc/x86.h). * Enable generalization of all variants of CAS via fetch_compare_and_swap. * Enable test_stack for pthreads-w32 and Win32 with native threads. * Fix generalized AO_char/short_compare_and_swap args (missing 'unsigned'). * Fix makefile sed rule for list_atomic (tests). * Fix missing abort() usage in atomic_ops_malloc and tests on WinCE. * Generalize compare_double_and_swap_double using double_compare_and_swap. * Generalize double_load/store for x86_64 (GCC). * Generate ao_t_is_int, 'loadstore' headers from templates. * Generate generalized AO_t load/store/fetch_and_add primitives from template. * Generate ordered_loads/stores_only headers from templates. * Group all X_acquire_release_volatile.h and X_[aligned_]atomic_load_store.h. * Implement and/or/xor, AO_double_load for ARM. * Implement atomic store using direct write by default on ARMv6+. * Implement char/short/int-wide primitives using GCC built-in atomic/sync. * Implement char/short/int_fetch_and_add for msftc/x86[_64] (Win32). * Implement char/short_fetch_and_add, char/short_load for ARMv6+ (GCC). * Implement char/short_store primitives at aligned addresses for ARM. * Implement compare_double_and_swap_double for SunCC/x86. * Implement double_load/store based on guaranteed x86 access atomicity. * Implement double_store for ARMv7 using LDREXD/STREXD. * Implement load/store via simple LDR/STR for ARMv6+ (msftc). * Implement nop_full/write using 'dmb' instruction if available (gcc/arm). * Improve debug printing in test_stack (tests). * Log messages to stdout instead of stderr (tests). * Make AO_ASSUME_VISTA also enables Win98 code in msftc/x86.h (Win32). * Minimize gcc/generic-arithm template by factoring out barriers. * Move 'unsigned' keyword to XCTYPE in generalize-small template. * Move default compiler options to CFLAGS in Makefile.msft (Win32). * Move definitions of ordered loads/stores to inner separate headers. * Move gcc-generic AO_t-wide primitives to generic-small/arithm headers. * Move generalized arithmetical primitives to 'generalize-arithm' template. * Optimize AO_spin manually to minimize compiler influence on its duration. * Parameterize list_atomic template with XSIZE (tests). * Perform only few list reversals in test_malloc if AO based on pthreads. * Put autogen.sh to 'dist' package (Automake). * Remote duplicate definition of test_and_set_acquire in generalize.h. * Remove X_aligned_atomic_load_store headers and template. * Remove duplicate AO_spin and AO_pause definition in atomic_ops_stack. * Remove gcc/x86_64.h eliminating code duplication of gcc/x86.h. * Remove nested AO_USE_PTHREAD_DEFS macro check in atomic_ops.h (gcc/arm). * Remove redundant 'cc' clobber for LDREXD instruction (gcc/arm). * Remove store_full from msftc/arm.h in favor of generalized primitive. * Remove sunc/x86_64.h eliminating code duplication of sunc/x86.h. * Remove unsafe emulation-based implementation of double CAS (SunCC/x86_64). * Remove useless 'perror' call in run_parallel.h (tests). * Reorder AO_double_t union elements for AO_DOUBLE_T_INITIALIZER portability. * Replace atomic_load_store.template with atomic_load and atomic_store ones. * Replace some FIXME items with TODO in atomic_ops.c and sysdeps headers. * Specify fetch_and_add/sub1 result as unused in test_atomic (tests). * Support AArch64 (64-bit ARM) target (GCC). * Support ARMv8 target (gcc/arm). * Test double_compare_and_swap in test_atomic (tests). * Use AO_ prefix for internal functions in arm_v6.h, hppa.h. * Use __atomic GCC built-in to implement generic double-wide CAS. * Use built-in __sync CAS for double-CAS if AO_USE_SYNC_CAS_BUILTIN for x86. * Workaround GCC 4.4.3 warning reported for 'val' of list_atomic.c (tests). == [7.3alpha2] 2012-05-11 == * Add '-no-undefined' to LDFLAGS in src/Makefile.am. * Add AO_and, AO_xor atomic operations. * Add AO_fetch_compare_and_swap primitives. * Add and fill in AUTHORS, TODO files. * Add autogen.sh file. * Adjust AO_..._H macros in public headers. * Code refactoring of gcc/arm.h by introducing AO_ARM_HAVE_x macros. * Define AO macros for libatomic_ops version identification. * Do not define NDEBUG if '--enable-assertions' passed to configure. * Eliminate compiler warnings in various functions and macros. * Generalize AO_compare_and_swap primitives via AO_fetch_compare_and_swap. * Generalize acquire/release/full CAS primitives for MIPS * Implement fetch_and_add, test_and_set primitives for MIPS. * Improve Makefile for MS VC++; pass '-W3' option to MS compiler. * Include ao_t_is_int.h from atomic_ops.h after first generalization pass * Merge all Makefile.am files in src tree. * Minor code refactoring of atomic_ops.c, generic_pthread.h. * Minor configure build improvements (e.g., ensure proper autoconf version). * Place only major per-release changes description to ChangeLog (this file). * Recognize AO_PREFER_GENERALIZED macro to favor generalization over assembly. * Remove all auto-generated files except for generalize-small.h from the repo. * Remove duplicate doc/COPYING and empty NEWS files. * Replace atomic_ops_malloc static mmap-related empty functions with macros. * Replace pointer relational comparisons with non-pointer ones. * Require autoconf 2.61 instead of v2.64. * Show extra compiler warnings (GCC only). * Turn off AO primitives inlining if AO_NO_INLINE defined. * Use __builtin_expect in CAS failure loop condition checks (GCC only). == [7.2e] 2013-11-10 == * Fix (remove) invalid include of read_ordered.h for ARM. * Fix AM_CONFIG_HEADER in configure for autoconf-2.69-1. * Fix AO_pause sleep delay for particular argument values (Win32). * Fix ARMv7 LDREXD/STREXD double-wide operand specification (GCC/Clang). * Fix LDREXD/STREXD use for pre-Clang3.3/arm. * Fix README regarding _acquire_read barrier. * Fix XSIZE_load/store definition order in generalize-small template. * Fix asm constraint of CAS memory operand for gcc/alpha, clang-3.1/mips. * Fix asm constraints of primitives in sunc/x86.h. * Fix cmpxchg16b-based compare_double_and_swap_double for SunCC/x86_64. * Fix compare_double_and_swap_double and double_ptr_storage for gcc/x32. * Fix compare_double_and_swap_double for clang3.0/x86 in PIC mode. * Fix compare_double_and_swap_double_full definition condition in emul_cas. * Fix generalize-small template adding missed CAS-based fetch_and_add. * Fix generalized fetch_and_add function. * Fix missing compiler barrier in nop_full for uniprocessor ARM. * Fix ordered_except_wr header inclusion for s390. * Fix return type of AO_int_X primitives defined in ao_t_is_int header. * Fix return type of char/short/int_load_read() in read_ordered.h. * Fix template-based headers regeneration order in src/Makefile. * Fix typos in ao_t_is_int, atomic_ops.h, generalize.h, msftc/arm.h comments. * Fix variable type to match printf format specifier in test_stack. * Fix visibility and initial value of 'dummy' variable in atomic_ops_stack. * Terminate tests with abort after error reported. == [7.2d] 2012-08-09 == * Fix AO_compare_double_and_swap_double_full for gcc-4.2.1/x86 in PIC mode. * Fix AO_compiler_barrier missing parentheses. * Fix missing 'unsigned' for generalized AO_char/short_fetch_and_add result. == [7.2] 2012-05-11 == * Add atomic_ops.pc.in and atomic_ops-uninstalled.pc.in to pkgconfig folder. * Define and use AO_PTRDIFF_T in tests for casts between pointer and integer. * Fix AO_compare_and_swap return type for s390 and PowerPC. * Fix AO_compare_double_and_swap_double_full for gcc/x86 (PIC mode). * Fix AO_stack_push_release to workaround bug in clang-1.1/x86 compiler. * Fix AO_test_and_setXX in tests/list_atomic.template. * Fix AO_test_and_set_full (gcc/x86[_64].h) to work-around a bug in LLVM v2.7. * Fix AO_test_and_set_full on m68k. * Fix __ARM_ARCH_5__ macro handling for Android NDK (ARMv7). * Fix configure for Cygwin, mingw-w64/32. * Fix configure to define __PIC__ macro explicitly if needed (GCC). * Fix double_ptr_storage definition for GCC pre-v4 (x86_64). * Fix for x32 by removing 'q' suffix in x86-64 instructions. * Fix generalization for IA-64 (regarding AO_or, AO_..._read/write primitives) * Fix generalized AO__fetch_and_add() return type. * Fix test_atomic_include for the case of missing CAS primitive. * Fix test_malloc - allocate less memory in case of missing mmap. * Implement the basic atomic primitives for the hexagon CPU. @ text @d1 1 a1 1 @@comment $NetBSD$ d72 1 a72 1 share/doc/libatomic_ops/README.txt @ 1.6 log @Import libatomic_ops from wip, copy distfile to ftp.netbsd.org. Fixes build on Mac OS X, thus fixing PR pkg/45377. @ text @d3 2 a6 3 include/atomic_ops/sysdeps/README include/atomic_ops/sysdeps/acquire_release_volatile.h include/atomic_ops/sysdeps/aligned_atomic_load_store.h d10 1 a12 3 include/atomic_ops/sysdeps/atomic_load_store.h include/atomic_ops/sysdeps/char_acquire_release_volatile.h include/atomic_ops/sysdeps/char_atomic_load_store.h d14 1 d19 4 a31 1 include/atomic_ops/sysdeps/gcc/x86_64.h d37 15 a51 3 include/atomic_ops/sysdeps/int_acquire_release_volatile.h include/atomic_ops/sysdeps/int_aligned_atomic_load_store.h include/atomic_ops/sysdeps/int_atomic_load_store.h a58 3 include/atomic_ops/sysdeps/short_acquire_release_volatile.h include/atomic_ops/sysdeps/short_aligned_atomic_load_store.h include/atomic_ops/sysdeps/short_atomic_load_store.h a61 1 include/atomic_ops/sysdeps/sunc/x86_64.h d68 1 d71 1 a72 1 share/doc/libatomic_ops/README_headers.txt @ 1.5 log @Remove @@dirrm entries from PLISTs @ text @d1 1 a1 1 @@comment $NetBSD: PLIST,v 1.4 2009/01/31 20:05:57 sketch Exp $ d12 1 d19 1 d27 1 d39 2 d51 2 @ 1.4 log @Sun Studio x86 implementation isn't quite good enough yet for e.g. pulseaudio, so instead use the generic pthread implementation for now. @ text @d1 1 a1 1 @@comment $NetBSD: PLIST,v 1.3 2009/01/27 20:26:01 sketch Exp $ a58 9 @@dirrm include/atomic_ops/sysdeps/sunc @@dirrm include/atomic_ops/sysdeps/msftc @@dirrm include/atomic_ops/sysdeps/icc @@dirrm include/atomic_ops/sysdeps/ibmc @@dirrm include/atomic_ops/sysdeps/hpc @@dirrm include/atomic_ops/sysdeps/gcc @@dirrm include/atomic_ops/sysdeps @@dirrm include/atomic_ops @@dirrm share/doc/libatomic_ops @ 1.3 log @Forgot to install the sunc/x86.h header in previous. @ text @d1 1 a1 1 @@comment $NetBSD: PLIST,v 1.2 2008/12/22 02:46:52 jmcneill Exp $ a45 1 include/atomic_ops/sysdeps/sunc/x86.h @ 1.2 log @libtoolize libatomic_ops so it builds shared libraries, bump PKGREVISION @ text @d1 1 a1 1 @@comment $NetBSD: PLIST,v 1.1.1.1 2008/10/25 00:32:23 bjs Exp $ d46 1 @ 1.1 log @Initial revision @ text @d1 1 a1 1 @@comment $NetBSD$ d50 2 a51 2 lib/libatomic_ops.a lib/libatomic_ops_gpl.a @ 1.1.1.1 log @Import libatomic_ops-20081024 (version 1.2) The latest code is only found in the boehm-gc CVS repository (see Makefile.version for information). I had to take this from there, as there were bug fixes. This library was imported primarily for the [hopefully] upcoming audio/pulseaudio package. TODO: Add support for NetBSD atomic ops? This package provides semi-portable access to hardware provided atomic memory operations. These might allow you to write code: - That does more interesting things in signal handlers. - Makes more effective use of multiprocessors by allowing you to write clever lock-free code. Note that such code is very difficult to get right, and will unavoidably be less portable than lock-based code. It ia also not always faster than lock-based code. But it may occasionally be a large performance win. - To experiment with new and much better thread programming paradigms, etc. As the latest code for this library is only available via CVS, this package provides a snapshot. @ text @@