summaryrefslogtreecommitdiff
path: root/atomic
Commit message (Collapse)AuthorAgeFilesLines
* Cleanup asm constraints (+ operand is both read and written by the instruction)davi2007-08-041-12/+9
| | | | | | | and clobbers. The xchg instruction always asserts the lock signal. git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@562765 13f79535-47bb-0310-9956-ffa450edef68
* Prefer solaris builtins even on x86, and fix a compiler warning.davi2007-08-041-1/+1
| | | | git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@562764 13f79535-47bb-0310-9956-ffa450edef68
* Fix win32 stub for apr_atomic_xchgptr.davi2007-07-121-1/+1
| | | | git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@555695 13f79535-47bb-0310-9956-ffa450edef68
* Fix a mis-merge of PPC memory barriers.davi2007-07-111-4/+2
| | | | git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@555258 13f79535-47bb-0310-9956-ffa450edef68
* Introduce apr_atomic_xchgptr, which atomically exchanges a pair of pointerdavi2007-07-108-0/+116
| | | | | | | values. Missing OS/390 implementation. git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@554995 13f79535-47bb-0310-9956-ffa450edef68
* New apr_atomic implementation for S/390 native atomic operations.davi2007-07-071-0/+132
| | | | | | | Tested on: RHEL AS 4 (Nahant Update 4), IBM/S390, running under VM (64 bit mode), gcc 3.4.6 git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@554095 13f79535-47bb-0310-9956-ffa450edef68
* New apr_atomic implementation for PowerPC native atomic operations.davi2007-07-041-0/+178
| | | | | | | PR: 42806 git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@553293 13f79535-47bb-0310-9956-ffa450edef68
* New apr_atomic implementation for Solaris 10 native atomic operations.davi2007-07-041-0/+74
| | | | | | | PR: 42806 git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@553292 13f79535-47bb-0310-9956-ffa450edef68
* New apr_atomic implementation for ia32 (x86 and x86_64) native atomic ↵davi2007-07-041-0/+111
| | | | | | | | | | | | operations, plus apr_atomic_casptr. PR: 42806 git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@553291 13f79535-47bb-0310-9956-ffa450edef68
* Given a modern compiler, this patch provides fast atomic operations on variousdavi2007-07-041-0/+74
| | | | | | | | | | | | | | platforms (alpha, ia32, ia64, powerpc, etc). Tested on: 2x Pentium D, Ubuntu 7.04, gcc 4.1.2 16x Itanium II, RHEL 5, gcc 4.1.1 PR: 42806 git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@553290 13f79535-47bb-0310-9956-ffa450edef68
* This patch tries to address some of the apr_atomic problems by reorganizingdavi2007-07-042-464/+192
| | | | | | | | | | the various backends. The generic implementation is used when no specialized implementation fits the defined criterias, or when the user forces the choice. PR: 42806 git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@553289 13f79535-47bb-0310-9956-ffa450edef68
* Avoid overwriting the hash_mutex table for applications that incorrectly callsdavi2007-06-301-0/+16
| | | | | | | | | | apr_atomic_init(). Noticied by: Tim Jones PR: 42760 git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@552161 13f79535-47bb-0310-9956-ffa450edef68
* Fix up integer type on Solaris 10 (gcc) compiles.jerenkrantz2006-08-311-1/+1
| | | | | | | | | * atomic/unix/apr_atomic.c (apr_atomic_dec32): Match declaration in apr_atomic.h for Solaris 10 implementation. git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@438796 13f79535-47bb-0310-9956-ffa450edef68
* Fix the typo.jorton2006-08-034-4/+4
| | | | git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@428317 13f79535-47bb-0310-9956-ffa450edef68
* Update license header.jorton2006-08-034-24/+24
| | | | git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@428313 13f79535-47bb-0310-9956-ffa450edef68
* Add __MINGW32__ versions of the Win32 Atomic functions, that all do their ↵pquerna2006-07-151-1/+15
| | | | | | own evil casting -- but it allows 100% of the testatomic cases to pass, when previously, it aborted if you tried to call any of the atomic functions. git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@422168 13f79535-47bb-0310-9956-ffa450edef68
* Implement apr_atomics using Solaris' native atomic API.colm2006-06-131-0/+55
| | | | | | | | | | | | | | | | | | * Use each of the atomic_ functions that we can. * atomic_add is NOT implemented, as Solaris' implementation can handle only signed deltas. * each function is conditionalised on its corresponding APR_OVERRIDE_* macro to avoid double-implementation. On Solaris x86/x64 with gcc we implement atomics using our inline assembly. Thank to: Mads Toftum for pointing out atomic_cas git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@413786 13f79535-47bb-0310-9956-ffa450edef68
* These args can't be volatile in MSVC 14.wrowe2006-01-131-1/+1
| | | | git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@368549 13f79535-47bb-0310-9956-ffa450edef68
* These operations are NOT necessarily function-based on 64 bitwrowe2005-05-161-0/+20
| | | | | | | | | architectures. Performed with inline code, these function cast wrappers broke our API. These original flavors should be present for all 64 bit compiler headers. git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@170467 13f79535-47bb-0310-9956-ffa450edef68
* Update copyright year to 2005 and standardize on current copyright owner line.jerenkrantz2005-02-044-4/+8
| | | | git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@151412 13f79535-47bb-0310-9956-ffa450edef68
* Remove .cvsignore files.jorton2004-11-182-8/+0
| | | | | | | Tipped-of-by: Uwe Zeisberger git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@76269 13f79535-47bb-0310-9956-ffa450edef68
* WIN64: avoid unresolved external error with 64 bit buildake2004-09-201-0/+8
| | | | git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@65336 13f79535-47bb-0310-9956-ffa450edef68
* * atomic/unix/apr_atomic.c: Force use of generic atomics if gccjorton2004-09-131-0/+6
| | | | | | | | defines __STRICT_ANSI__ (e.g. with -std=c89), since inline asm is not supported in that case. git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@65328 13f79535-47bb-0310-9956-ffa450edef68
* Fixed apr_atomic_dec on NetWare to be thread safeclar2004-09-021-2/+1
| | | | git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@65325 13f79535-47bb-0310-9956-ffa450edef68
* Quiet build breakage on VC6 with the originally shipped includeswrowe2004-04-161-5/+16
| | | | | | | | | | (InterlockedCompareExchangePointer available in later SDK headers.) Few should be compiling on 64 bit cpu's under VC6 anymore, so ignore that edge case. git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@65063 13f79535-47bb-0310-9956-ffa450edef68
* Relicense.jorton2004-02-281-49/+10
| | | | git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@64930 13f79535-47bb-0310-9956-ffa450edef68
* Relicense APR under Apache License, Version 2.0jerenkrantz2004-02-133-147/+30
| | | | git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@64904 13f79535-47bb-0310-9956-ffa450edef68
* First whack at switching to a single top-level make. This adds a dependencygstein2004-02-052-27/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | upon Python at packaging time, but not at end-user config/build time. As far as I can tell, the build continues to function properly. (out-of-dir config/make not tested, and apr-iconv prolly needs some work) The buildconf scripts now generate a build-outputs.mk file which is included by the root's Makefile (via the build/gen-build.py script). bulid-outputs.mk specifies all of the various files present in the distribution. The top-level Makefiles were simplified to use an $(OBJECTS) symbol rather than 'find'ing them. Similarly, a $(HEADERS) symbol is used for the exports. The corresponding delete-* targets were eliminated since we have a precise set of inputs. The subdirs' Makefiles were removed since they are no longer called/used. The apr-util/uri Makefile was responsible for compiling a C program to generate the uri_delims.h file. That process was replaced by a Python script to generate the header (called by buildconf). The .c and .dsp were left for the Windows build to continue, but that should be revamped. build/apr_rules.mk was revamped somewhat to avoid recursion, but a lot of cleanup is still needed. Much of the recursive/local/x- logic is no longer needed and can be elimianated. rules.mk was created for inclusion by N makefiles, but that isn't really true any more, so it could probably be tossed (caveat: test/Makefile). Saved for a phase 2. Some additional work was added to properly clean up files in */build/, rather than relying on a makefile in there. git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@64891 13f79535-47bb-0310-9956-ffa450edef68
* Clean up configure logic for enabling "nonportable" atomics: don'tjorton2004-01-061-2/+6
| | | | | | | | | | | | | | | | export the result via apr.h, and enable use of inline asm by default on ppc64 and x86_64. * configure.in: Define USE_GENERIC_ATOMICS on i[456]86 unless --enable-nonportable-atomics was used. * include/apr.h.in: Remove APR_FORCE_GENERIC_ATOMICS. * atomic/unix/apr_atomic.c: Check for !defined(USE_GENERIC_ATOMICS) rather than defined(APR_FORCE_GENERIC_ATOMICS). git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@64861 13f79535-47bb-0310-9956-ffa450edef68
* * atomic/unix/apr_atomic.c: Enable x86 asm on AMD64.jorton2004-01-061-1/+2
| | | | git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@64859 13f79535-47bb-0310-9956-ffa450edef68
* * atomic/solaris_sparc: Remove now-unused leftovers ofjorton2003-12-313-33/+0
| | | | | | | Solaris/SPARC-specific atomics. git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@64854 13f79535-47bb-0310-9956-ffa450edef68
* * apr_atomic.c: Remove use of atomic_* from FreeBSD'sjorton2003-12-311-30/+0
| | | | | | | | machine/atomic.h, these don't return values and aren't usable from userspace on more arches than just i386. git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@64853 13f79535-47bb-0310-9956-ffa450edef68
* Review of x86 asm, fixing intel_atomic_add32 with gcc 2.7.2.1 whichjorton2003-12-161-13/+10
| | | | | | | | | | | | | | | | doesn't allow the '+' constraint on an output operand. * apr_atomic.c (apr_atomic_cas32, apr_atomic_sub32): Condition code register is clobbered. (intel_atomic_add32): Use separate input operands rather than read/write output operands; clobber cc. (apr_atomic_dec32): Simplify by two instructions to output an 8-bit value; clobber cc. Submitted by: David Howells <dhowells@redhat.com> git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@64839 13f79535-47bb-0310-9956-ffa450edef68
* enable i386 atomics for gcc on any platform...trawick2003-12-151-2/+1
| | | | | | | | | it is expected that there are relatively few (or zero) platforms where it would be used where it won't work git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@64837 13f79535-47bb-0310-9956-ffa450edef68
* enable the x86 atomic code on Solaris/x86trawick2003-12-121-1/+1
| | | | git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@64835 13f79535-47bb-0310-9956-ffa450edef68
* ppc + gcc updatesgregames2003-12-091-6/+29
| | | | | | | | | | | | apr_atomic_cas32: * make sure gcc uses a valid base register (not r0) for mem, * tell gcc that the condition code is clobbered, and * use asm local labels to avoid future namespace collisions apr_atomic_add32: add a native implementation git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@64832 13f79535-47bb-0310-9956-ffa450edef68
* fix an apparent cut-n-paste-o in a commentgregames2003-12-091-1/+1
| | | | git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@64824 13f79535-47bb-0310-9956-ffa450edef68
* no functional change. add whitespace to align asm operandsgregames2003-12-091-1/+1
| | | | git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@64823 13f79535-47bb-0310-9956-ffa450edef68
* changes to the apr atomic implementations for unix-ish boxestrawick2003-12-081-33/+69
| | | | | | | | | | | | | | | | | a) need to check for __ppc__ on Darwin to pick up the PPC non-portable atomics b) axe the historic checks for defined(apr_atomic_foo) when deciding whether to generate the default version of apr_atomic_foo; checking for APR_OVERRIDE_ATOMIC_FOO is sufficient c) if the platform has defined apr_atomic_cas32() but not all the other apr_atomic_foo32(), use apr_atomic_cas32() in a generic version that will be much preferable to the no-cas32 version (which must use locking) git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@64818 13f79535-47bb-0310-9956-ffa450edef68
* Switch to a pure atomic implementationbnicholes2003-12-081-6/+2
| | | | git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@64817 13f79535-47bb-0310-9956-ffa450edef68
* add apr_atomic_cas32 for ppc with gcc.gregames2003-12-081-0/+25
| | | | | | | | Could someone try this with testatomic on Mac OS X? It should just work, but I couldn't test it. moof no longer likes me. git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@64816 13f79535-47bb-0310-9956-ffa450edef68
* intel_atomic_add32: re-specify asm inputs and outputs, after RTFMing andgregames2003-12-051-4/+5
| | | | | | | Googling git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@64815 13f79535-47bb-0310-9956-ffa450edef68
* use an inlined function to eliminate one copy of the xadd assembler code.gregames2003-12-051-8/+9
| | | | | | | You need to specify at least -O1 to enable inlining. That seems fair. git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@64814 13f79535-47bb-0310-9956-ffa450edef68
* * apr_atomic.c: abort() if any mutex locking or unlocking calls fail.jorton2003-12-051-51/+42
| | | | git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@64812 13f79535-47bb-0310-9956-ffa450edef68
* be sure that _add and _inc use 32 bit instructions. Also make sure gccgregames2003-12-041-4/+4
| | | | | | | knows we want the same register for an input and an output operand. git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@64810 13f79535-47bb-0310-9956-ffa450edef68
* Fix up the return values for apr_atomic_add32() and apr_atomic_inc32() since ↵bnicholes2003-12-041-2/+6
| | | | | | the native Netware functions return void by default git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@64809 13f79535-47bb-0310-9956-ffa450edef68
* apr_atomic_add32() and apr_atomic_inc32() now return values (the old value)trawick2003-12-044-29/+50
| | | | | | | Submitted by: gregames (all the hard bits) and trawick git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@64808 13f79535-47bb-0310-9956-ffa450edef68
* move win32 atomic functions out of the unix file (which wasn't builttrawick2003-12-032-70/+121
| | | | | | | | | | on win32 anyway) and into a unique file apr_atomic_casptr() is busted for me on win32, as I am missing the magic bits for InterlockedCompareExchangePointer() git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@64805 13f79535-47bb-0310-9956-ffa450edef68
* apr_atomic_t is deadtrawick2003-12-031-6/+0
| | | | git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@64804 13f79535-47bb-0310-9956-ffa450edef68
* move the implementations of apr atomics out of the public header filetrawick2003-12-033-9/+295
| | | | | | | | | | | in order to . aid in keeping the different flavors consistent . prevent bug fixes from requiring that apps be rebuilt Reviewed and/or fixed by: Brad Nicholes, Greg Marr git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@64803 13f79535-47bb-0310-9956-ffa450edef68