All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Andreas Färber" <afaerber@suse.de>
To: Eduardo Habkost <ehabkost@redhat.com>
Cc: qemu-devel@nongnu.org, rth@twiddle.net
Subject: Re: [Qemu-devel] [PATCH 3/7] target-alpha: Add support for -cpu ?
Date: Thu, 06 Dec 2012 16:42:48 +0100	[thread overview]
Message-ID: <50C0BCF8.60504@suse.de> (raw)
In-Reply-To: <20121206153725.GH4986@otherpad.lan.raisama.net>

Am 06.12.2012 16:37, schrieb Eduardo Habkost:
> On Wed, Oct 31, 2012 at 04:04:00AM +0100, Andreas Färber wrote:
>> Implement alphabetical listing of CPU subclasses.
>>
>> Signed-off-by: Andreas Färber <afaerber@suse.de>
>> ---
>>  target-alpha/cpu.c |   41 +++++++++++++++++++++++++++++++++++++++++
>>  target-alpha/cpu.h |    4 +++-
>>  2 Dateien geändert, 44 Zeilen hinzugefügt(+), 1 Zeile entfernt(-)
>>
>> diff --git a/target-alpha/cpu.c b/target-alpha/cpu.c
>> index e1a5739..ab25c44 100644
>> --- a/target-alpha/cpu.c
>> +++ b/target-alpha/cpu.c
>> @@ -23,6 +23,47 @@
>>  #include "qemu-common.h"
>>  
>>  
>> +typedef struct AlphaCPUListState {
>> +    fprintf_function cpu_fprintf;
>> +    FILE *file;
>> +} AlphaCPUListState;
>> +
>> +/* Sort alphabetically by type name. */
>> +static gint alpha_cpu_list_compare(gconstpointer a, gconstpointer b)
>> +{
>> +    ObjectClass *class_a = (ObjectClass *)a;
>> +    ObjectClass *class_b = (ObjectClass *)b;
>> +    const char *name_a, *name_b;
>> +
>> +    name_a = object_class_get_name(class_a);
>> +    name_b = object_class_get_name(class_b);
>> +    return strcmp(name_a, name_b);
>> +}
>> +
>> +static void alpha_cpu_list_entry(gpointer data, gpointer user_data)
>> +{
>> +    ObjectClass *oc = data;
>> +    AlphaCPUListState *s = user_data;
>> +
>> +    (*s->cpu_fprintf)(s->file, "  %s\n",
>> +                      object_class_get_name(oc));
>> +}
>> +
>> +void alpha_cpu_list(FILE *f, fprintf_function cpu_fprintf)
>> +{
>> +    AlphaCPUListState s = {
>> +        .file = f,
>> +        .cpu_fprintf = cpu_fprintf,
>> +    };
>> +    GSList *list;
>> +
>> +    list = object_class_get_list(TYPE_ALPHA_CPU, false);
>> +    list = g_slist_sort(list, alpha_cpu_list_compare);
>> +    (*cpu_fprintf)(f, "Available CPUs:\n");
>> +    g_slist_foreach(list, alpha_cpu_list_entry, &s);
>> +    g_slist_free(list);
>> +}
> 
> target-arm has very similar code. Isn't it better to first write a
> common reusable function to list CPU models using the list of
> subclasses, instead of adding very similar functions to all
> architectures?

Most ordering functions vary slightly (target-arm for "any"). It would
be possible to generalize the struct and provide a wrapper with type and
callback arguments, but then again some functions add a header line like
here, some don't, and some even hardcode some options like "host". For
the targets that already had -cpu ? support before QOM I tried to keep
output identical apart from possibly the order.

Andreas

-- 
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg

  reply	other threads:[~2012-12-06 15:43 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-10-31  3:03 [Qemu-devel] [PATCH 0/7] target-alpha: More CPU QOM'ifications Andreas Färber
2012-10-31  3:03 ` [Qemu-devel] [FYI 1/7] target-alpha: Use consistent include paths Andreas Färber
2012-10-31  3:03 ` [Qemu-devel] [PATCH 2/7] target-alpha: Turn CPU definitions into subclasses Andreas Färber
2012-10-31  4:57   ` Richard Henderson
2012-12-06 10:11     ` Andreas Färber
2012-12-07 13:58       ` Richard Henderson
2012-12-06 15:29   ` Eduardo Habkost
2012-12-06 15:51     ` Andreas Färber
2012-12-06 16:09       ` Eduardo Habkost
2012-12-06 16:21         ` Andreas Färber
2012-10-31  3:04 ` [Qemu-devel] [PATCH 3/7] target-alpha: Add support for -cpu ? Andreas Färber
2012-10-31  5:01   ` Richard Henderson
2012-12-06 15:37   ` Eduardo Habkost
2012-12-06 15:42     ` Andreas Färber [this message]
2012-12-06 16:02       ` Andreas Färber
2012-12-06 17:45         ` Eduardo Habkost
2012-12-06 15:59     ` Peter Maydell
2012-12-06 16:10       ` Eduardo Habkost
2012-10-31  3:04 ` [Qemu-devel] [PATCH 4/7] target-alpha: Let cpu_alpha_init() return AlphaCPU Andreas Färber
2012-10-31  5:02   ` Richard Henderson
2012-10-31  3:04 ` [Qemu-devel] [PATCH 5/7] alpha: Pass AlphaCPU array to Typhoon Andreas Färber
2012-10-31  5:04   ` Richard Henderson
2012-10-31  3:04 ` [Qemu-devel] [PATCH 6/7] target-alpha: Avoid leaking the alarm timer over reset Andreas Färber
2012-10-31  5:08   ` Richard Henderson
2012-10-31  3:04 ` [Qemu-devel] [RFC 7/7] target-alpha: Implement CPU reset Andreas Färber
2012-10-31  5:10   ` Richard Henderson

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=50C0BCF8.60504@suse.de \
    --to=afaerber@suse.de \
    --cc=ehabkost@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=rth@twiddle.net \
    /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.