[LIB] pcounter : unline too big functions
authorEric Dumazet <dada1@cosmosbay.com>
Fri, 4 Jan 2008 04:41:28 +0000 (20:41 -0800)
committerDavid S. Miller <davem@davemloft.net>
Mon, 28 Jan 2008 23:00:35 +0000 (15:00 -0800)
commit571e7682026fd0e25833d103a3eeb74be29bf199
tree3707c7fb4ea4384a163cddc9fac76e9d8860a109
parent789675e216617b1331875c42a81f58227a06df91
[LIB] pcounter : unline too big functions

Before pushing pcounter to Linus tree, I would like to make some adjustments.

Goal is to reduce kernel text size, by unlining too big functions.

When a pcounter is bound to a statically defined per_cpu variable,
we define two small helpers functions. (No more folding function
using the fat for_each_possible_cpu(cpu) ... )

static DEFINE_PER_CPU(int, NAME##_pcounter_values);
static void NAME##_pcounter_add(struct pcounter *self, int val)
{
       __get_cpu_var(NAME##_pcounter_values) += val;
}
static int NAME##_pcounter_getval(const struct pcounter *self, int cpu)
{
       return per_cpu(NAME##_pcounter_values, cpu);
}

Fast path is therefore unchanged, while folding/alloc/free is now unlined.

This saves 228 bytes on i386

Signed-off-by: Eric Dumazet <dada1@cosmosbay.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/pcounter.h
lib/pcounter.c