lkml.org 
[lkml]   [2008]   [Feb]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[RFC PATCH 1/8] [NET]: uninline skb_put, de-bloats a lot
    Date
    ~500 files changed
    ...
    kernel/uninlined.c:
    skb_put | +104
    1 function changed, 104 bytes added, diff: +104

    vmlinux.o:
    869 functions changed, 198 bytes added, 111003 bytes removed, diff: -110805

    This change is INCOMPLETE, I think that the call to current_text_addr()
    should be rethought but I don't have a clue how to do that.

    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
    ---
    include/linux/skbuff.h | 20 +-------------------
    net/core/skbuff.c | 21 +++++++++++++++++++++
    2 files changed, 22 insertions(+), 19 deletions(-)

    diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
    index 412672a..5925435 100644
    --- a/include/linux/skbuff.h
    +++ b/include/linux/skbuff.h
    @@ -896,25 +896,7 @@ static inline unsigned char *__skb_put(struct sk_buff *skb, unsigned int len)
    return tmp;
    }

    -/**
    - * skb_put - add data to a buffer
    - * @skb: buffer to use
    - * @len: amount of data to add
    - *
    - * This function extends the used data area of the buffer. If this would
    - * exceed the total buffer size the kernel will panic. A pointer to the
    - * first byte of the extra data is returned.
    - */
    -static inline unsigned char *skb_put(struct sk_buff *skb, unsigned int len)
    -{
    - unsigned char *tmp = skb_tail_pointer(skb);
    - SKB_LINEAR_ASSERT(skb);
    - skb->tail += len;
    - skb->len += len;
    - if (unlikely(skb->tail > skb->end))
    - skb_over_panic(skb, len, current_text_addr());
    - return tmp;
    -}
    +extern unsigned char *skb_put(struct sk_buff *skb, unsigned int len);

    static inline unsigned char *__skb_push(struct sk_buff *skb, unsigned int len)
    {
    diff --git a/net/core/skbuff.c b/net/core/skbuff.c
    index 4e35422..661d439 100644
    --- a/net/core/skbuff.c
    +++ b/net/core/skbuff.c
    @@ -857,6 +857,27 @@ free_skb:
    return err;
    }

    +/**
    + * skb_put - add data to a buffer
    + * @skb: buffer to use
    + * @len: amount of data to add
    + *
    + * This function extends the used data area of the buffer. If this would
    + * exceed the total buffer size the kernel will panic. A pointer to the
    + * first byte of the extra data is returned.
    + */
    +unsigned char *skb_put(struct sk_buff *skb, unsigned int len)
    +{
    + unsigned char *tmp = skb_tail_pointer(skb);
    + SKB_LINEAR_ASSERT(skb);
    + skb->tail += len;
    + skb->len += len;
    + if (unlikely(skb->tail > skb->end))
    + skb_over_panic(skb, len, current_text_addr());
    + return tmp;
    +}
    +EXPORT_SYMBOL(skb_put);
    +
    /* Trims skb to length len. It can change skb pointers.
    */

    --
    1.5.2.2
    --
    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/

    \
     
     \ /
      Last update: 2008-02-20 14:51    [W:0.024 / U:0.976 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site