]> git.baikalelectronics.ru Git - kernel.git/commit
bpf: introduce percpu_freelist
authorAlexei Starovoitov <ast@fb.com>
Tue, 8 Mar 2016 05:57:14 +0000 (21:57 -0800)
committerDavid S. Miller <davem@davemloft.net>
Tue, 8 Mar 2016 20:28:31 +0000 (15:28 -0500)
commitd7b384e5356e3e838f7c34c1b11a52b2b2990ffa
tree6ad9017b3693661a9bb896ac6993dc0c92b58c8d
parent2c64e14cfe0dca23231c10df35757b8f639ebe6a
bpf: introduce percpu_freelist

Introduce simple percpu_freelist to keep single list of elements
spread across per-cpu singly linked lists.

/* push element into the list */
void pcpu_freelist_push(struct pcpu_freelist *, struct pcpu_freelist_node *);

/* pop element from the list */
struct pcpu_freelist_node *pcpu_freelist_pop(struct pcpu_freelist *);

The object is pushed to the current cpu list.
Pop first trying to get the object from the current cpu list,
if it's empty goes to the neigbour cpu list.

For bpf program usage pattern the collision rate is very low,
since programs push and pop the objects typically on the same cpu.

Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
kernel/bpf/Makefile
kernel/bpf/percpu_freelist.c [new file with mode: 0644]
kernel/bpf/percpu_freelist.h [new file with mode: 0644]