Hello,
> --- kfree_skb/include/linux/skbuff.h~kfree_skb_uninline_null 2006-02-23
> 13:35:05.000000000 +0100
> +++ kfree_skb/include/linux/skbuff.h 2006-02-23 13:36:23.000000000 +0100
> @@ -306,6 +306,7 @@ struct sk_buff {
>
> #include <asm/system.h>
>
> +void kfree_skb(struct sk_buff *skb);
> extern void __kfree_skb(struct sk_buff *skb);
> extern struct sk_buff *__alloc_skb(unsigned int size,
> gfp_t priority, int fclone);
> @@ -406,22 +407,6 @@ static inline struct sk_buff *skb_get(st
> */
>
> /**
> - * kfree_skb - free an sk_buff
> - * @skb: buffer to free
> - *
> - * Drop a reference to the buffer and free it if the usage count has
> - * hit zero.
> - */
> -static inline void kfree_skb(struct sk_buff *skb)
> -{
> - if (likely(atomic_read(&skb->users) == 1))
> - smp_rmb();
> - else if (likely(!atomic_dec_and_test(&skb->users)))
> - return;
> - __kfree_skb(skb);
> -}
> -
> -/**
> * skb_cloned - is the buffer a clone
> * @skb: buffer to check
> *
> --- kfree_skb/net/core/skbuff.c~kfree_skb_uninline_null 2006-02-23
> 13:35:05.000000000 +0100
> +++ kfree_skb/net/core/skbuff.c 2006-02-23 13:37:01.000000000 +0100
> @@ -355,6 +355,24 @@ void __kfree_skb(struct sk_buff *skb)
> }
>
> /**
> + * kfree_skb - free an sk_buff
> + * @skb: buffer to free
> + *
> + * Drop a reference to the buffer and free it if the usage count has
> + * hit zero.
> + */
> +void kfree_skb(struct sk_buff *skb)
> +{
> + if (unlikely(!skb))
> + return;
> + if (likely(atomic_read(&skb->users) == 1))
> + smp_rmb();
> + else if (likely(!atomic_dec_and_test(&skb->users)))
> + return;
> + __kfree_skb(skb);
> +}
> +
just thinking about it a little bit, why not un-inline the current
kfree_skb to, say, _kfree_skb, and make a new inlined kfree_skb
which just does
static inline void kfree_skb(struct sk_buff *skb)
{
if (unlikely(!skb))
return;
_kfree_skb(skb);
}
This way the kernel with the new inlined kfree_skb should still become
smaller while not calling the un-inlined _kfree_skb if skb is
NULL...?? (_should_ become smaller is a claim I make without any
proof, sorry...)
Sven
--
Linux zion.homelinux.com 2.6.16-rc3-mm1_27 #27 Wed Feb 15 17:51:36 CET 2006
i686 athlon i386 GNU/Linux
14:14:50 up 5 days, 18:30, 1 user, load average: 0.14, 0.11, 0.17
pgp3WY3Yi97zC.pgp
Description: PGP signature
