From: "Andreas Färber" <afaerber@suse.de>
To: Eduardo Habkost <ehabkost@redhat.com>
Cc: qemu-devel@nongnu.org, Anthony Liguori <anthony@codemonkey.ws>,
rth@twiddle.net
Subject: Re: [Qemu-devel] [PATCH 3/7] target-alpha: Add support for -cpu ?
Date: Thu, 06 Dec 2012 17:02:52 +0100 [thread overview]
Message-ID: <50C0C1AC.40301@suse.de> (raw)
In-Reply-To: <50C0BCF8.60504@suse.de>
Am 06.12.2012 16:42, schrieb Andreas Färber:
> 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,
Just remembered Anthony being against callbacks in this context:
http://lists.gnu.org/archive/html/qemu-devel/2012-02/msg02944.html
The RFC was for specifically for implementing the CPU lists. So I used
g_slist_* instead as suggested, which duplicates a few lines FWIW.
If someone has suggestions how else to share more code, I'm all ears.
Andreas
> 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
next prev parent reply other threads:[~2012-12-06 16:03 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
2012-12-06 16:02 ` Andreas Färber [this message]
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=50C0C1AC.40301@suse.de \
--to=afaerber@suse.de \
--cc=anthony@codemonkey.ws \
--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.