Messages in this thread Patches in this message | | | Date | Wed, 5 Jul 2006 02:31:20 -0700 | From | Andrew Morton <> | Subject | Re: [patch] uninline init_waitqueue_*() functions |
| |
On Wed, 5 Jul 2006 10:49:14 +0200 Ingo Molnar <mingo@elte.hu> wrote:
> Subject: uninline init_waitqueue_*() functions > From: Ingo Molnar <mingo@elte.hu> > > some wait.h inlines are way too large: init_waitqueue_entry() and > init_waitqueue_func_entry() generate 20-30 bytes of inlined code > per call site, and init_waitqueue_head() is 30-40 bytes (on x86).
20-30 bytes for
> -static inline void init_waitqueue_entry(wait_queue_t *q, struct task_struct *p) > -{ > - q->flags = 0; > - q->private = p; > - q->func = default_wake_function; > -}
seem too much.
This:
--- a/fs/select.c~a +++ a/fs/select.c @@ -129,6 +129,7 @@ static void __pollwait(struct file *filp entry->filp = filp; entry->wait_address = wait_address; init_waitqueue_entry(&entry->wait, current); + init_waitqueue_entry(&entry->wait, current); add_wait_queue(wait_address,&entry->wait); } Increases fs/select.o by only seven bytes.
And this:
diff -puN fs/select.c~a fs/select.c --- a/fs/select.c~a +++ a/fs/select.c @@ -128,7 +128,7 @@ static void __pollwait(struct file *filp get_file(filp); entry->filp = filp; entry->wait_address = wait_address; - init_waitqueue_entry(&entry->wait, current); + xxinit_waitqueue_entry(&entry->wait, current); add_wait_queue(wait_address,&entry->wait); } _ shrinks fs/select.o by eight bytes. (More than I expected). So it does appear to be a space win, but a pretty slim one.
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |