From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=58211 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Oq8Mr-0006rV-Al for qemu-devel@nongnu.org; Mon, 30 Aug 2010 13:42:02 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1Oq8Mq-00015p-46 for qemu-devel@nongnu.org; Mon, 30 Aug 2010 13:42:01 -0400 Received: from mail-qy0-f173.google.com ([209.85.216.173]:59969) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Oq8Mq-00015h-0e for qemu-devel@nongnu.org; Mon, 30 Aug 2010 13:42:00 -0400 Received: by qyk5 with SMTP id 5so3169688qyk.4 for ; Mon, 30 Aug 2010 10:41:59 -0700 (PDT) Message-ID: <4C7BED63.9080105@codemonkey.ws> Date: Mon, 30 Aug 2010 12:41:55 -0500 From: Anthony Liguori MIME-Version: 1.0 Subject: Re: [Qemu-devel] Re: [PATCH 04/14] Zero initialize timespec struct explicitly References: <1283182547-26116-1-git-send-email-Jes.Sorensen@redhat.com> <1283182547-26116-5-git-send-email-Jes.Sorensen@redhat.com> <4C7BD19E.1050604@codemonkey.ws> <4C7BEC96.6040506@redhat.com> In-Reply-To: <4C7BEC96.6040506@redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Jes Sorensen Cc: kwolf@redhat.com, qemu-devel@nongnu.org On 08/30/2010 12:38 PM, Jes Sorensen wrote: > On 08/30/10 18:56, malc wrote: > >> On Mon, 30 Aug 2010, Anthony Liguori wrote: >> >> >>> On 08/30/2010 10:35 AM, Jes.Sorensen@redhat.com wrote: >>> >>>> From: Jes Sorensen >>>> diff --git a/linux-aio.c b/linux-aio.c >>>> index 68f4b3d..3240996 100644 >>>> --- a/linux-aio.c >>>> +++ b/linux-aio.c >>>> @@ -118,7 +118,7 @@ static void qemu_laio_completion_cb(void *opaque) >>>> struct io_event events[MAX_EVENTS]; >>>> uint64_t val; >>>> ssize_t ret; >>>> - struct timespec ts = { 0 }; >>>> + struct timespec ts = { 0, 0 }; >>>> >>>> >>> I don't like these. What's wrong with { } or { 0 }? Implicit zeroing of >>> members is a critical feature of structure initialization so if there is >>> something wrong with this, it's important to know why because otherwise we've >>> got a massive amount of broken code. >>> >>> >> Apart from gcc complaining about fields not being initialized explicitly >> there's nothing wrong with it. >> > Sure it compiles, it works, but it's not pretty. What does it mean if > you write = { 1 } in the above case? > Initialize first field to 1 and all remaining fields to 0. That's precisely what it means and there's a lot of code written today that relies on this behavior. No doubt, c99 initializers are an improvement but { 0 } still looks better to me than {}. However, I wouldn't object to replacing {0} with {}. Avoiding {} in favor of memset is crazy though. Regards, Anthony Liguori