From: Markus Armbruster <armbru@redhat.com>
To: "Marc-André Lureau" <marcandre.lureau@redhat.com>
Cc: zhenwei pi <pizhenwei@bytedance.com>,
Michael Roth <michael.roth@amd.com>,
Konstantin Kostiuk <kkostiuk@redhat.com>,
qemu-devel <qemu-devel@nongnu.org>
Subject: Re: [PATCH v3 1/1] qga: add command 'guest-get-cpustats'
Date: Wed, 06 Jul 2022 14:55:47 +0200 [thread overview]
Message-ID: <87fsjemmcs.fsf@pond.sub.org> (raw)
In-Reply-To: <CAMxuvayE_zn_ZckKyjra6F7jfg9mm0r8V0t_qO2_wV82oJ7xCA@mail.gmail.com> ("Marc-André Lureau"'s message of "Wed, 6 Jul 2022 14:59:04 +0400")
Marc-André Lureau <marcandre.lureau@redhat.com> writes:
> Hi
>
> On Wed, Jul 6, 2022 at 1:56 PM zhenwei pi <pizhenwei@bytedance.com> wrote:
>>
>> A vCPU thread always reaches 100% utilization when:
>> - guest uses idle=poll
>> - disable HLT vm-exit
>> - enable MWAIT
>>
>> Add new guest agent command 'guest-get-cpustats' to get guest CPU
>> statistics, we can know the guest workload and how busy the CPU is.
>>
>> To avoid compiling error like:
>> qga/qga-qapi-types.h:948:28: error: expected member name or ';'
>> after declaration specifiers
>> GuestLinuxCpuStats linux;
>> ~~~~~~~~~~~~~~~~~~ ^
>> <built-in>:336:15: note: expanded from here
What actually happens here: the compiler predefines macro linux like
#define linux 1
>> Also add 'linux' into polluted_words.
Does polluted_words cover all of the predefined macros then?
Checking...
$ gcc -E -dD - </dev/null 2>&1 | grep 'define [^_]'
#define linux 1
#define unix 1
Yes. We don't care about the ones starting with '_'.
> That looks good to me, although you may want to split the scripts/qapi change.
>
> Markus, what do you think?
I'd very much prefer a separate patch. Suggested commit message:
qapi: Avoid generating C identifier 'linux'
'linux' is not usable as identifier, because C compilers targeting
Linux predefine it as a macro expanding to 1. Add it to
@polluted_words. 'unix' is already there.
>> Signed-off-by: zhenwei pi <pizhenwei@bytedance.com>
>
> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
[...]
>> diff --git a/scripts/qapi/common.py b/scripts/qapi/common.py
>> index 489273574a..737b059e62 100644
>> --- a/scripts/qapi/common.py
>> +++ b/scripts/qapi/common.py
>> @@ -114,7 +114,7 @@ def c_name(name: str, protect: bool = True) -> str:
>> 'and', 'and_eq', 'bitand', 'bitor', 'compl', 'not',
>> 'not_eq', 'or', 'or_eq', 'xor', 'xor_eq'])
>> # namespace pollution:
>> - polluted_words = set(['unix', 'errno', 'mips', 'sparc', 'i386'])
>> + polluted_words = set(['unix', 'errno', 'mips', 'sparc', 'i386', 'linux'])
>> name = re.sub(r'[^A-Za-z0-9_]', '_', name)
>> if protect and (name in (c89_words | c99_words | c11_words | gcc_words
>> | cpp_words | polluted_words)
>> --
>> 2.20.1
>>
prev parent reply other threads:[~2022-07-06 12:57 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-07-06 9:51 [PATCH v3 0/1] qga: add command 'guest-get-cpustats' zhenwei pi
2022-07-06 9:51 ` [PATCH v3 1/1] " zhenwei pi
2022-07-06 10:59 ` Marc-André Lureau
2022-07-06 12:55 ` Markus Armbruster [this message]
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=87fsjemmcs.fsf@pond.sub.org \
--to=armbru@redhat.com \
--cc=kkostiuk@redhat.com \
--cc=marcandre.lureau@redhat.com \
--cc=michael.roth@amd.com \
--cc=pizhenwei@bytedance.com \
--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.