public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
From: Markus Armbruster <armbru@redhat.com>
To: Kevin Wolf <kwolf@redhat.com>
Cc: Stefan Hajnoczi <stefanha@gmail.com>, Avi Kivity <avi@redhat.com>,
	qemu-devel@nongnu.org, kvm@vger.kernel.org
Subject: Re: [Qemu-devel] [PATCH] Introduce QEMU_NEW()
Date: Mon, 25 Jul 2011 13:02:39 +0200	[thread overview]
Message-ID: <m3k4b68vxs.fsf@blackfin.pond.sub.org> (raw)
In-Reply-To: <4E2D448C.9030306@redhat.com> (Kevin Wolf's message of "Mon, 25 Jul 2011 12:25:16 +0200")

Kevin Wolf <kwolf@redhat.com> writes:

> Am 25.07.2011 12:06, schrieb Stefan Hajnoczi:
>> On Mon, Jul 25, 2011 at 9:51 AM, Avi Kivity <avi@redhat.com> wrote:
>>> qemu_malloc() is type-unsafe as it returns a void pointer.  Introduce
>>> QEMU_NEW() (and QEMU_NEWZ()), which return the correct type.
>>>
>>> Signed-off-by: Avi Kivity <avi@redhat.com>
>>> ---
>>>
>>> This is part of my memory API patchset, but doesn't really belong there.
>>>
>>>  qemu-common.h |    3 +++
>>>  1 files changed, 3 insertions(+), 0 deletions(-)
>>>
>>> diff --git a/qemu-common.h b/qemu-common.h
>>> index ba55719..66effa3 100644
>>> --- a/qemu-common.h
>>> +++ b/qemu-common.h
>>> @@ -186,6 +186,9 @@ void qemu_free(void *ptr);
>>>  char *qemu_strdup(const char *str);
>>>  char *qemu_strndup(const char *str, size_t size);
>>>
>>> +#define QEMU_NEW(type) ((type *)(qemu_malloc(sizeof(type))))
>>> +#define QEMU_NEWZ(type) ((type *)(qemu_mallocz(sizeof(type))))
>> 
>> Does this mean we need to duplicate the type name for each allocation?
>> 
>> struct foo *f;
>> 
>> ...
>> f = qemu_malloc(sizeof(*f));
>> 
>> Becomes:
>> 
>> struct foo *f;
>> 
>> ...
>> f = QEMU_NEW(struct foo);
>
> Maybe we should allow this and make it the usual pattern:
>
> f = qemu_new(typeof(*f));
>
> It's gcc specific, but we already don't care about portability to other
> compilers in more places.
>
> On the other hand, how many bugs did we have recently that were caused
> by a wrong sizeof for qemu_malloc? As far as I can say, there's no real
> reason to do it. I think it's the same kind of discussion as with
> forbidding qemu_malloc(0) (except that this time it just won't improve
> things much instead of being really stupid).

Side-stepping the stupid "OMG malloc(0) is weird, therefore we must make
qemu_malloc(0) differently weird" controversy would be useful all by
itself.

  parent reply	other threads:[~2011-07-25 11:02 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-07-25  8:51 [PATCH] Introduce QEMU_NEW() Avi Kivity
2011-07-25  9:32 ` Alexander Graf
2011-07-25  9:37   ` Sasha Levin
2011-07-25  9:43     ` Alexander Graf
2011-07-25  9:49       ` Avi Kivity
2011-07-25  9:48   ` [Qemu-devel] " Peter Maydell
2011-07-25  9:52     ` Avi Kivity
2011-07-25  9:56       ` Alexander Graf
2011-07-25 10:02         ` Avi Kivity
2011-07-25 10:04           ` [Qemu-devel] " Alexander Graf
2011-07-25 10:09             ` Avi Kivity
2011-07-25 10:19               ` Alexander Graf
2011-07-25 10:46                 ` [Qemu-devel] " malc
2011-07-25 10:59               ` Markus Armbruster
2011-07-25 11:11                 ` [Qemu-devel] " Alexander Graf
2011-07-25 12:19                   ` Anthony Liguori
2011-07-25 14:16               ` Blue Swirl
2011-07-25 14:20                 ` Avi Kivity
2011-07-25 12:30       ` [Qemu-devel] " Anthony Liguori
2011-07-25 11:35   ` Avi Kivity
2011-07-25 10:06 ` Stefan Hajnoczi
2011-07-25 10:12   ` [Qemu-devel] " Avi Kivity
2011-07-25 10:25   ` Kevin Wolf
2011-07-25 10:28     ` Stefan Hajnoczi
2011-07-25 11:02     ` Markus Armbruster [this message]
2011-07-25 11:45       ` Avi Kivity
2011-07-25 15:10   ` Jes Sorensen
2011-07-25 15:15     ` [Qemu-devel] " Anthony Liguori
2011-07-25 15:17       ` Jes Sorensen
2011-07-25 15:20         ` Avi Kivity
2011-07-25 15:21           ` [Qemu-devel] " Jes Sorensen
2011-07-25 15:24             ` Avi Kivity
2011-07-25 15:28               ` [Qemu-devel] " Jes Sorensen
2011-07-25 15:35                 ` Avi Kivity
2011-07-25 12:11 ` Anthony Liguori
2011-07-25 12:18   ` [Qemu-devel] " Avi Kivity
2011-07-25 12:21     ` Anthony Liguori
2011-07-25 12:41       ` Avi Kivity
2011-07-25 14:23       ` [Qemu-devel] " Blue Swirl
2011-07-25 14:25         ` Anthony Liguori
2011-07-25 14:30           ` Max Filippov
2011-07-25 14:43             ` [Qemu-devel] " Anthony Liguori
2011-07-25 14:47               ` malc
2011-07-25 14:50                 ` [Qemu-devel] " Avi Kivity
2011-07-25 14:58                   ` malc
2011-07-25 14:59                     ` Avi Kivity
2011-07-25 14:51         ` Paolo Bonzini
2011-07-25 14:56           ` Blue Swirl
2011-07-25 15:21             ` Paolo Bonzini
2011-08-01 10:49 ` Richard W.M. Jones

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=m3k4b68vxs.fsf@blackfin.pond.sub.org \
    --to=armbru@redhat.com \
    --cc=avi@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=kwolf@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@gmail.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox