qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Kevin Wolf <kwolf@redhat.com>
To: Stefan Hajnoczi <stefanha@gmail.com>
Cc: Avi Kivity <avi@redhat.com>, kvm@vger.kernel.org, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH] Introduce QEMU_NEW()
Date: Mon, 25 Jul 2011 12:25:16 +0200	[thread overview]
Message-ID: <4E2D448C.9030306@redhat.com> (raw)
In-Reply-To: <CAJSP0QUjLf1NS6uw0u5DwEaDEP6nW+CA+0MK4ka=yg5Nf55ftw@mail.gmail.com>

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).

Kevin

  parent reply	other threads:[~2011-07-25 10:22 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-07-25  8:51 [Qemu-devel] [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   ` 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           ` Alexander Graf
2011-07-25 10:09             ` Avi Kivity
2011-07-25 10:19               ` Alexander Graf
2011-07-25 10:46                 ` malc
2011-07-25 10:59               ` Markus Armbruster
2011-07-25 11:11                 ` 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       ` Anthony Liguori
2011-07-25 11:35   ` Avi Kivity
2011-07-25 10:06 ` Stefan Hajnoczi
2011-07-25 10:12   ` Avi Kivity
2011-07-25 10:25   ` Kevin Wolf [this message]
2011-07-25 10:28     ` Stefan Hajnoczi
2011-07-25 11:02     ` Markus Armbruster
2011-07-25 11:45       ` Avi Kivity
2011-07-25 15:10   ` Jes Sorensen
2011-07-25 15:15     ` Anthony Liguori
2011-07-25 15:17       ` Jes Sorensen
2011-07-25 15:20         ` Avi Kivity
2011-07-25 15:21           ` Jes Sorensen
2011-07-25 15:24             ` Avi Kivity
2011-07-25 15:28               ` Jes Sorensen
2011-07-25 15:35                 ` Avi Kivity
2011-07-25 12:11 ` Anthony Liguori
2011-07-25 12:18   ` Avi Kivity
2011-07-25 12:21     ` Anthony Liguori
2011-07-25 12:41       ` Avi Kivity
2011-07-25 14:23       ` Blue Swirl
2011-07-25 14:25         ` Anthony Liguori
2011-07-25 14:30           ` Max Filippov
2011-07-25 14:43             ` Anthony Liguori
2011-07-25 14:47               ` malc
2011-07-25 14:50                 ` 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=4E2D448C.9030306@redhat.com \
    --to=kwolf@redhat.com \
    --cc=avi@redhat.com \
    --cc=kvm@vger.kernel.org \
    --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;
as well as URLs for NNTP newsgroup(s).