Messages in this thread | | | From | Denys Vlasenko <> | Subject | Re: [PATCH 3/7] [NET]: uninline dev_alloc_skb, de-bloats a lot | Date | Fri, 28 Mar 2008 00:36:59 +0100 |
| |
On Thursday 27 March 2008 13:38, Ilpo Järvinen wrote: > Allyesconfig (v2.6.24-mm1): > > -23668 392 funcs, 104 +, 23772 -, diff: -23668 --- dev_alloc_skb > > Without many debug CONFIGs (v2.6.25-rc2-mm1): > > -12178 382 funcs, 157 +, 12335 -, diff: -12178 --- dev_alloc_skb > dev_alloc_skb | +37
This will be very confusing for casual reader:
> +struct sk_buff *dev_alloc_skb(unsigned int length) > +{ > + return __dev_alloc_skb(length, GFP_ATOMIC); > +} > +EXPORT_SYMBOL(dev_alloc_skb);
"what, they want to save one push instruction per callsite??".
Can you add a comment which explains the intent?
+struct sk_buff *dev_alloc_skb(unsigned int length) +{ + /* There is more code here than it seems: + * __dev_alloc_skb is an inline */ + return __dev_alloc_skb(length, GFP_ATOMIC); +} +EXPORT_SYMBOL(dev_alloc_skb);
Another good chunk of code size saving can be achieved by introducing dev_alloc_skb_or_warn(), and using it in places like these:
drivers/net/irda/nsc-ircc.c:
skb = dev_alloc_skb(len+1); if (skb == NULL) { IRDA_WARNING("%s(), memory squeeze, " "dropping frame.\n", __FUNCTION__);
drivers/net/appletalk/ltpc.c:
skb = dev_alloc_skb(3+sklen); if (skb == NULL) { printk("%s: dropping packet due to memory squeeze.\n",
net/econet/af_econet.c:
newskb = alloc_skb((len - sizeof(struct aunhdr) + 15) & ~15, GFP_ATOMIC); if (newskb == NULL) { printk(KERN_DEBUG "AUN: memory squeeze, dropping packet.\n"); /* Send nack and hope sender tries again */ goto bad; }
(hmm, this last one also wants s/alloc_skb(GFP_ATOMIC)/dev_alloc_skb/)
-- vda -- 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/
| |