From: Paolo Bonzini <pbonzini@redhat.com>
To: Eduardo Habkost <ehabkost@redhat.com>, qemu-devel@nongnu.org
Cc: "Igor Mammedov" <imammedo@redhat.com>,
"Andreas Färber" <afaerber@suse.de>
Subject: Re: [Qemu-devel] [PATCH 1/2] target-i386: Simplify listflags() function
Date: Fri, 06 Feb 2015 17:02:01 +0100 [thread overview]
Message-ID: <54D4E579.4040401@redhat.com> (raw)
In-Reply-To: <1422986938-13469-2-git-send-email-ehabkost@redhat.com>
On 03/02/2015 19:08, Eduardo Habkost wrote:
> listflags() had lots of unnecessary complexity. Instead of printing to a
> buffer that will be immediately printed, simply call the printing
> function directly. Also, remove the fbits and flags arguments that were
> always set to the same value. Also, there's no need to list the flags in
> reverse order.
>
> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
> ---
> target-i386/cpu.c | 42 ++++++++++++++----------------------------
> 1 file changed, 14 insertions(+), 28 deletions(-)
>
> diff --git a/target-i386/cpu.c b/target-i386/cpu.c
> index 3a9b32e..39d2fda 100644
> --- a/target-i386/cpu.c
> +++ b/target-i386/cpu.c
> @@ -1911,34 +1911,19 @@ static void x86_cpu_parse_featurestr(CPUState *cs, char *features,
> }
> }
>
> -/* generate a composite string into buf of all cpuid names in featureset
> - * selected by fbits. indicate truncation at bufsize in the event of overflow.
> - * if flags, suppress names undefined in featureset.
> +/* Print all cpuid feature names in featureset
> */
> -static void listflags(char *buf, int bufsize, uint32_t fbits,
> - const char **featureset, uint32_t flags)
> -{
> - const char **p = &featureset[31];
> - char *q, *b, bit;
> - int nc;
> -
> - b = 4 <= bufsize ? buf + (bufsize -= 3) - 1 : NULL;
> - *buf = '\0';
> - for (q = buf, bit = 31; fbits && bufsize; --p, fbits &= ~(1 << bit), --bit)
> - if (fbits & 1 << bit && (*p || !flags)) {
> - if (*p)
> - nc = snprintf(q, bufsize, "%s%s", q == buf ? "" : " ", *p);
> - else
> - nc = snprintf(q, bufsize, "%s[%d]", q == buf ? "" : " ", bit);
> - if (bufsize <= nc) {
> - if (b) {
> - memcpy(b, "...", sizeof("..."));
> - }
> - return;
> - }
> - q += nc;
> - bufsize -= nc;
> +static void listflags(FILE *f, fprintf_function print, const char **featureset)
> +{
> + int bit;
> + bool first = true;
> +
> + for (bit = 0; bit < 32; bit++) {
> + if (featureset[bit]) {
> + print(f, "%s%s", first ? "" : " ", featureset[bit]);
> + first = false;
> }
> + }
> }
>
> /* generate CPU information. */
> @@ -1963,8 +1948,9 @@ void x86_cpu_list(FILE *f, fprintf_function cpu_fprintf)
> for (i = 0; i < ARRAY_SIZE(feature_word_info); i++) {
> FeatureWordInfo *fw = &feature_word_info[i];
>
> - listflags(buf, sizeof(buf), (uint32_t)~0, fw->feat_names, 1);
> - (*cpu_fprintf)(f, " %s\n", buf);
> + (*cpu_fprintf)(f, " ");
> + listflags(f, cpu_fprintf, fw->feat_names);
> + (*cpu_fprintf)(f, "\n");
> }
> }
>
>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
next prev parent reply other threads:[~2015-02-06 16:02 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-02-03 18:08 [Qemu-devel] [PATCH 0/2] target-i386: Small code cleanup Eduardo Habkost
2015-02-03 18:08 ` [Qemu-devel] [PATCH 1/2] target-i386: Simplify listflags() function Eduardo Habkost
2015-02-06 16:02 ` Paolo Bonzini [this message]
2015-02-03 18:08 ` [Qemu-devel] [PATCH 2/2] target-i386: Eliminate unnecessary get_cpuid_vendor() function Eduardo Habkost
2015-02-03 18:18 ` Andreas Färber
2015-03-04 12:28 ` [Qemu-devel] [PATCH 0/2] target-i386: Small code cleanup Eduardo Habkost
2015-03-04 14:05 ` Andreas Färber
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=54D4E579.4040401@redhat.com \
--to=pbonzini@redhat.com \
--cc=afaerber@suse.de \
--cc=ehabkost@redhat.com \
--cc=imammedo@redhat.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.