From: Manfred Spraul <manfred@colorfullife.com>
To: Mikael Pettersson <mikpe@csd.uu.se>
Cc: anton@samba.org, linux-kernel@vger.kernel.org, torvalds@transmeta.com
Subject: Re: [PATCH] 2.5 fast poll on ppc64
Date: Thu, 26 Dec 2002 22:42:45 +0100 [thread overview]
Message-ID: <3E0B77D5.2060002@colorfullife.com> (raw)
In-Reply-To: <200212262055.VAA28874@harpo.it.uu.se>
Mikael Pettersson wrote:
>>struct a1 { int a; char b; short c[];};
>>struct a2 { int a; char b; short c[1];};
>>
>> sizeof(struct a{1,2}) is 8.
>> offsetof(struct a{1,2}, c) is 6.
>>
>>--> sizeof(struct a1) != offsetof(struct a2, c)
>>
>>
>
>Oh dear. I checked my C9x draft copy and you seem to be right.
>The standard states that sizeof(struct a1) == offsetof(struct a1, c),
>but both gcc (2.95.3 and 3.2) and Intel's icc (7.0) get it wrong on x86:
>they make sizeof(struct a1) == 8 but offsetof(struct a1, c) == 6.
>
>
I've filed a gcc bug, no 9058: As the reply, I got a mail from Joseph
Myers with links to TC to the C99 standard:
http://std.dkuug.dk/JTC1/SC22/WG14/www/docs/n983.htm
http://std.dkuug.dk/JTC1/SC22/WG14/www/docs/n987.htm
>
>
>>I agree. Should we fix the kmalloc allocations, too?
>>
>>- pp = kmalloc(sizeof(struct poll_list)+
>>+ pp = kmalloc(offsetof(struct poll_list,entries)+
>> sizeof(struct pollfd)*
>> (i>POLLFD_PER_PAGE?POLLFD_PER_PAGE:i),
>> GFP_KERNEL);
>>
>>
>
>Yes, this should be changed as you suggest. The old code only
>works in C99-compliant implementations, but we now know that both
>gcc and icc get this wrong, so it seems prudent to revert to
>the classical formulation, using the 'entries[0]' declaration
>syntax and offsetof() instead of sizeof().
>
>
I found an even simpler formula:
offsetof(struct poll_list,entries[i>POLLFD_PER_PAGE?POLLFD_PER_PAGE:i];
I'll ask the gcc guys if that formula is a portable solution.
--
Manfred
next prev parent reply other threads:[~2002-12-26 21:34 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-12-26 20:55 [PATCH] 2.5 fast poll on ppc64 Mikael Pettersson
2002-12-26 21:23 ` Linus Torvalds
2002-12-26 21:42 ` Manfred Spraul [this message]
2002-12-27 0:14 ` Richard Henderson
-- strict thread matches above, loose matches on Subject: below --
2002-12-26 12:57 Mikael Pettersson
2002-12-26 13:53 ` Manfred Spraul
2002-12-26 6:48 Anton Blanchard
2002-12-26 12:09 ` Manfred Spraul
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=3E0B77D5.2060002@colorfullife.com \
--to=manfred@colorfullife.com \
--cc=anton@samba.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mikpe@csd.uu.se \
--cc=torvalds@transmeta.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