42 lines
1022 B
C
42 lines
1022 B
C
|
/* Copyright (c) 2011-2014 PLUMgrid, http://plumgrid.com
|
||
|
*
|
||
|
* This program is free software; you can redistribute it and/or
|
||
|
* modify it under the terms of version 2 of the GNU General Public
|
||
|
* License as published by the Free Software Foundation.
|
||
|
*/
|
||
|
#ifndef _LINUX_BPF_H
|
||
|
#define _LINUX_BPF_H 1
|
||
|
|
||
|
#include <uapi/linux/bpf.h>
|
||
|
#include <linux/workqueue.h>
|
||
|
|
||
|
struct bpf_map;
|
||
|
|
||
|
/* map is generic key/value storage optionally accesible by eBPF programs */
|
||
|
struct bpf_map_ops {
|
||
|
/* funcs callable from userspace (via syscall) */
|
||
|
struct bpf_map *(*map_alloc)(union bpf_attr *attr);
|
||
|
void (*map_free)(struct bpf_map *);
|
||
|
};
|
||
|
|
||
|
struct bpf_map {
|
||
|
atomic_t refcnt;
|
||
|
enum bpf_map_type map_type;
|
||
|
u32 key_size;
|
||
|
u32 value_size;
|
||
|
u32 max_entries;
|
||
|
struct bpf_map_ops *ops;
|
||
|
struct work_struct work;
|
||
|
};
|
||
|
|
||
|
struct bpf_map_type_list {
|
||
|
struct list_head list_node;
|
||
|
struct bpf_map_ops *ops;
|
||
|
enum bpf_map_type type;
|
||
|
};
|
||
|
|
||
|
void bpf_register_map_type(struct bpf_map_type_list *tl);
|
||
|
void bpf_map_put(struct bpf_map *map);
|
||
|
|
||
|
#endif /* _LINUX_BPF_H */
|