From: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Jesper Juhl <jj@chaosbits.net>,
linux-kernel@vger.kernel.org, Tom Zanussi <zanussi@us.ibm.com>,
Karim Yaghmour <karim@opersys.com>,
Paul Mundt <lethal@linux-sh.org>,
Steven Rostedt <rostedt@goodmis.org>,
Jens Axboe <axboe@kernel.dk>
Subject: Re: [PATCH] Optimize relay_alloc_page_array() slightly by using vzalloc rather than vmalloc and memset
Date: Mon, 1 Nov 2010 09:38:19 -0400 [thread overview]
Message-ID: <20101101133819.GA28138@Krystal> (raw)
In-Reply-To: <20101031174635.88f441fe.akpm@linux-foundation.org>
* Andrew Morton (akpm@linux-foundation.org) wrote:
> On Sun, 31 Oct 2010 14:39:14 -0400 Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca> wrote:
>
> > * Jesper Juhl (jj@chaosbits.net) wrote:
> > > On Sat, 30 Oct 2010, Mathieu Desnoyers wrote:
> > >
> > > > * Jesper Juhl (jj@chaosbits.net) wrote:
[...]
> > Which looks to me like a misunderstanding of the C99 standard. What you
> > do is:
> >
> > static struct page **relay_alloc_page_array(unsigned int n_pages)
> > {
> > const size_t pa_size = n_pages * sizeof(struct page *);
> > ...
> > }
> >
> > So the compiler has no choice but to emit code that will fill in the
> > value of pa_size at runtime, because it depends on "n_pages", a
> > parameter received by the function. So pa_size is everything but
> > constant.
> >
> > The C99 standard, section 6.7.3 (Type qualifiers) states:
> >
> > "The implementation may place a const object that is not volatile in a
> > read-only region of storage. Moreover, the implementation need not
> > allocate storage for such an object if its address is never used."
> >
> > So maybe gcc is kind here and it just removes this const specifier
> > without complaining, but a different compiler might be more strict and
> > fail to compile because you would be dynamically assigning a value to a
> > variable placed in read-only storage.
Actually, "object" in the C99 standard refers to global variables, not
local variables. The misunderstanding was on my part.
Sorry about that,
Mathieu
--
Mathieu Desnoyers
Operating System Efficiency R&D Consultant
EfficiOS Inc.
http://www.efficios.com
next prev parent reply other threads:[~2010-11-01 13:38 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-10-30 20:26 [PATCH] Optimize relay_alloc_page_array() slightly by using vzalloc rather than vmalloc and memset Jesper Juhl
2010-10-30 21:47 ` Mathieu Desnoyers
2010-10-30 21:50 ` Jesper Juhl
2010-10-31 18:39 ` Mathieu Desnoyers
2010-11-01 0:46 ` Andrew Morton
2010-11-01 6:58 ` Pekka Enberg
2010-11-01 11:27 ` Mathieu Desnoyers
2010-11-01 12:26 ` Américo Wang
2010-11-01 13:38 ` Mathieu Desnoyers [this message]
2010-11-01 12:22 ` Américo Wang
2010-11-01 13:00 ` el es
2010-11-01 12:48 ` Jens Axboe
2010-11-01 13:08 ` Mathieu Desnoyers
2010-11-01 13:34 ` Jens Axboe
2010-11-01 13:41 ` Pekka Enberg
2010-11-01 13:42 ` Jens Axboe
2010-11-01 16:00 ` Mathieu Desnoyers
2010-11-01 18:02 ` Jesper Juhl
2010-11-01 18:26 ` Mathieu Desnoyers
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=20101101133819.GA28138@Krystal \
--to=mathieu.desnoyers@polymtl.ca \
--cc=akpm@linux-foundation.org \
--cc=axboe@kernel.dk \
--cc=jj@chaosbits.net \
--cc=karim@opersys.com \
--cc=lethal@linux-sh.org \
--cc=linux-kernel@vger.kernel.org \
--cc=rostedt@goodmis.org \
--cc=zanussi@us.ibm.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 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.