On 02/02/2017 06:00 PM, Jesper Dangaard Brouer via iovisor-dev wrote:
On Thu, 2 Feb 2017 11:56:19 +0100
Jesper Dangaard Brouer <[email protected]> wrote:
On Tue, 31 Jan 2017 20:54:10 -0800
Alexei Starovoitov <[email protected]> wrote:
On Tue, Jan 31, 2017 at 9:54 AM, Jesper Dangaard Brouer via
iovisor-dev <[email protected]> wrote:
On Sat, 28 Jan 2017 10:14:58 +1100 Brendan Gregg <[email protected]>
wrote:
I did some in the bcc ref guide, but it's incomplete, and the bcc versions:
https://github.com/iovisor/bcc/blob/master/docs/reference_guide.md
Thanks! - this seem rather BCC specific syntax, and I'm looking for
documentation close for the kernel (samples/bpf/).
The best documentation I found was the man-page for the syscall bpf(2):
http://man7.org/linux/man-pages/man2/bpf.2.html
In lack of a better place, I've started documenting eBPF here:
https://prototype-kernel.readthedocs.io/en/latest/bpf/index.html
This doc is compatible with the kernels doc format, and I hope we can
push this into the kernel tree, if it turns out to be valuable?
(https://www.kernel.org/doc/html/latest/)
yeah. definitely would be great to add map descriptions to the kernel docs.
So far most of it is in commit logs.
git log kernel/bpf/arraymap.c|tail -33
git log kernel/bpf/hashtab.c|tail -33
will give an overview of key hash and array map principles.
Thanks, I'm using that to write some doc.
http://prototype-kernel.readthedocs.io/en/latest/bpf/ebpf_maps.html
Gotten to BPF_MAP_TYPE_ARRAY
http://prototype-kernel.readthedocs.io/en/latest/bpf/ebpf_maps.html#bpf-map-type-array
Can you explain the difference between the kernel and userspace side of
the call bpf_map_lookup_elem() ?
Kernel side:
long *value = bpf_map_lookup_elem(&my_map, &key);
Userspace side:
long long value;
bpf_map_lookup_elem(map_fd[0], &key, &value)
Looks like userspace gets a copy of the memory...
If so, how can userspace then increment the value safely?
I documented this myself, please correct me.
http://prototype-kernel.readthedocs.io/en/latest/bpf/ebpf_maps.html#creating-a-map
http://prototype-kernel.readthedocs.io/en/latest/bpf/ebpf_maps.html#interacting-with-maps
Commit:
https://github.com/netoptimizer/prototype-kernel/commit/ffbcdc453f3c
Inlined below:
-------------
[PATCH] doc: how interacting with eBPF maps works
Documented by reading the code.
I hope someone more knowledgeable will review this and
correct me where I misunderstood things.
Signed-off-by: Jesper Dangaard Brouer <[email protected]>
Would be great if you could submit some of the missing pieces to
[email protected] for bpf(2) man-page inclusion while at
it, so this doesn't need to be done twice. Thanks for documenting.
Note that struct bpf_map_def can vary based on the bpf loader
implementation f.e. iproute2 has a different layout and also makes
use of map/prog pinning (see iproute2's lib/bpf.c).
Thanks,
Daniel
_______________________________________________
iovisor-dev mailing list
[email protected]
https://lists.iovisor.org/mailman/listinfo/iovisor-dev