Package: libatomic-ops-dev
Version: 1.2-4
Severity: wishlist

Please add (or request from upstream) 32-bit operations on 64-bit
platforms.  For example, right now AO_HAVE_int_compare_and_swap is only
defined on ia64, not amd64 or any other 64-bit platform.

I think this should be possible to do in a non-arch-dependent header as
follows:
      * Block the 64-bit aligned address of the 32-bit object 
      * Load, compare, and swap just the 32-bit portion in question
        (using 32-bit fields in standard_ao_double_t.h) 
      * Unblock the 64-bit aligned address
The only thing this approach would lose is the ability to simultaneously
compare-and-swap two adjacent 32-bit values, but right now that's not
possible anyway.  But it may be less straightforward, and in any case, I
don't know how to do it.

Background: OpenMPI requires 32-bit atomic operations for several
functions.  It implements these in assembly on about half of the
architectures in Debian.  To get it to work, one approach is to use
libatomic-ops-dev instead of upstream assembler.  But that doesn't work
on non-ia64 64-bit architectures for the reason above.

Thank you,
-Adam
-- 
GPG fingerprint: D54D 1AEE B11C CE9B A02B  C5DD 526F 01E8 564E E4B6

Engineering consulting with open source tools
http://www.opennovation.com/




-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to