From: "Alex Bennée" <alex.bennee@linaro.org>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: Paolo Bonzini <pbonzini@redhat.com>,
QEMU Developers <qemu-devel@nongnu.org>
Subject: Re: [PATCH] qemu/atomic.h: add #ifdef guards for stdatomic.h
Date: Thu, 26 Mar 2020 17:32:08 +0000 [thread overview]
Message-ID: <87a743nht3.fsf@linaro.org> (raw)
In-Reply-To: <CAFEAcA8Lo84gNk2tFCKsgM_O50bXTCs6Z9jH6aCvfDA56TDCmA@mail.gmail.com>
Peter Maydell <peter.maydell@linaro.org> writes:
> On Thu, 26 Mar 2020 at 17:01, Alex Bennée <alex.bennee@linaro.org> wrote:
>>
>> Deep inside the FreeBSD netmap headers we end up including stdatomic.h
>> which clashes with qemu's atomic functions which are modelled along
>> the C11 standard. To avoid a massive rename lets just ifdef around the
>> problem.
>>
>> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
>> ---
>> include/qemu/atomic.h | 6 ++++++
>> 1 file changed, 6 insertions(+)
>>
>> diff --git a/include/qemu/atomic.h b/include/qemu/atomic.h
>> index f9cd24c8994..ff72db51154 100644
>> --- a/include/qemu/atomic.h
>> +++ b/include/qemu/atomic.h
>> @@ -208,11 +208,14 @@
>> /* Provide shorter names for GCC atomic builtins, return old value */
>> #define atomic_fetch_inc(ptr) __atomic_fetch_add(ptr, 1, __ATOMIC_SEQ_CST)
>> #define atomic_fetch_dec(ptr) __atomic_fetch_sub(ptr, 1, __ATOMIC_SEQ_CST)
>> +
>> +#ifndef atomic_fetch_add
>> #define atomic_fetch_add(ptr, n) __atomic_fetch_add(ptr, n, __ATOMIC_SEQ_CST)
>> #define atomic_fetch_sub(ptr, n) __atomic_fetch_sub(ptr, n, __ATOMIC_SEQ_CST)
>> #define atomic_fetch_and(ptr, n) __atomic_fetch_and(ptr, n, __ATOMIC_SEQ_CST)
>> #define atomic_fetch_or(ptr, n) __atomic_fetch_or(ptr, n, __ATOMIC_SEQ_CST)
>> #define atomic_fetch_xor(ptr, n) __atomic_fetch_xor(ptr, n, __ATOMIC_SEQ_CST)
>> +#endif
>
> This will work around FreeBSD's current implementation in particular,
> but I don't think there's anything in the C11 spec that mandates that
> atomic_fetch_add() and friends have to be macros and not simply
> functions...
Sure there are two alternative options:
- Move to using stdatomic headers - on Linux they seem to be C++ only
- Rename all out atomic functions - seems a bit of a big patch for rc releases
I suspect we should look at option two for 5.1
--
Alex Bennée
next prev parent reply other threads:[~2020-03-26 17:32 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-26 17:01 [PATCH] qemu/atomic.h: add #ifdef guards for stdatomic.h Alex Bennée
2020-03-26 17:14 ` Peter Maydell
2020-03-26 17:32 ` Alex Bennée [this message]
2020-03-26 18:05 ` Paolo Bonzini
2020-03-26 20:19 ` Peter Maydell
2020-03-27 9:51 ` Alex Bennée
2020-03-27 13:35 ` Richard Henderson
2020-03-26 19:58 ` Richard Henderson
2020-03-26 20:05 ` Paolo Bonzini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87a743nht3.fsf@linaro.org \
--to=alex.bennee@linaro.org \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.