Skip to content
Snippets Groups Projects
  • Stefan Hajnoczi's avatar
    d73415a3
    qemu/atomic.h: rename atomic_ to qatomic_ · d73415a3
    Stefan Hajnoczi authored
    
    clang's C11 atomic_fetch_*() functions only take a C11 atomic type
    pointer argument. QEMU uses direct types (int, etc) and this causes a
    compiler error when a QEMU code calls these functions in a source file
    that also included <stdatomic.h> via a system header file:
    
      $ CC=clang CXX=clang++ ./configure ... && make
      ../util/async.c:79:17: error: address argument to atomic operation must be a pointer to _Atomic type ('unsigned int *' invalid)
    
    Avoid using atomic_*() names in QEMU's atomic.h since that namespace is
    used by <stdatomic.h>. Prefix QEMU's APIs with 'q' so that atomic.h
    and <stdatomic.h> can co-exist. I checked /usr/include on my machine and
    searched GitHub for existing "qatomic_" users but there seem to be none.
    
    This patch was generated using:
    
      $ git grep -h -o '\<atomic\(64\)\?_[a-z0-9_]\+' include/qemu/atomic.h | \
        sort -u >/tmp/changed_identifiers
      $ for identifier in $(</tmp/changed_identifiers); do
            sed -i "s%\<$identifier\>%q$identifier%g" \
                $(git grep -I -l "\<$identifier\>")
        done
    
    I manually fixed line-wrap issues and misaligned rST tables.
    
    Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
    Reviewed-by: default avatarPhilippe Mathieu-Daudé <philmd@redhat.com>
    Acked-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    Message-Id: <20200923105646.47864-1-stefanha@redhat.com>
    d73415a3
    History
    qemu/atomic.h: rename atomic_ to qatomic_
    Stefan Hajnoczi authored
    
    clang's C11 atomic_fetch_*() functions only take a C11 atomic type
    pointer argument. QEMU uses direct types (int, etc) and this causes a
    compiler error when a QEMU code calls these functions in a source file
    that also included <stdatomic.h> via a system header file:
    
      $ CC=clang CXX=clang++ ./configure ... && make
      ../util/async.c:79:17: error: address argument to atomic operation must be a pointer to _Atomic type ('unsigned int *' invalid)
    
    Avoid using atomic_*() names in QEMU's atomic.h since that namespace is
    used by <stdatomic.h>. Prefix QEMU's APIs with 'q' so that atomic.h
    and <stdatomic.h> can co-exist. I checked /usr/include on my machine and
    searched GitHub for existing "qatomic_" users but there seem to be none.
    
    This patch was generated using:
    
      $ git grep -h -o '\<atomic\(64\)\?_[a-z0-9_]\+' include/qemu/atomic.h | \
        sort -u >/tmp/changed_identifiers
      $ for identifier in $(</tmp/changed_identifiers); do
            sed -i "s%\<$identifier\>%q$identifier%g" \
                $(git grep -I -l "\<$identifier\>")
        done
    
    I manually fixed line-wrap issues and misaligned rST tables.
    
    Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
    Reviewed-by: default avatarPhilippe Mathieu-Daudé <philmd@redhat.com>
    Acked-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    Message-Id: <20200923105646.47864-1-stefanha@redhat.com>