Thread (22 messages) flat view 22 messages, 5 authors, 2019-10-29

Re: [PATCH bpf-next v3 4/4] selftests: Add tests for automatic map pinning

From: Andrii Nakryiko <hidden>
Date: 2019-10-28 18:23:23
Also in: bpf

On Mon, Oct 28, 2019 at 9:13 AM Jesper Dangaard Brouer
[off-list ref] wrote:
On Mon, 28 Oct 2019 15:32:26 +0000
Yonghong Song [off-list ref] wrote:
quoted
On 10/28/19 6:15 AM, Toke Høiland-Jørgensen wrote:
quoted
Jesper Dangaard Brouer [off-list ref] writes:
quoted
On Sun, 27 Oct 2019 21:53:19 +0100
Toke Høiland-Jørgensen [off-list ref] wrote:
quoted
diff --git a/tools/testing/selftests/bpf/progs/test_pinning.c b/tools/testing/selftests/bpf/progs/test_pinning.c
new file mode 100644
index 000000000000..ff2d7447777e
--- /dev/null
+++ b/tools/testing/selftests/bpf/progs/test_pinning.c
@@ -0,0 +1,29 @@
+// SPDX-License-Identifier: GPL-2.0
+
+#include <linux/bpf.h>
+#include "bpf_helpers.h"
+
+int _version SEC("version") = 1;
+
+struct {
+ __uint(type, BPF_MAP_TYPE_ARRAY);
+ __uint(max_entries, 1);
+ __type(key, __u32);
+ __type(value, __u64);
+ __uint(pinning, LIBBPF_PIN_BY_NAME);
+} pinmap SEC(".maps");
So, this is the new BTF-defined maps syntax.

Please remind me, what version of LLVM do we need to compile this?
No idea what the minimum version is. I'm running LLVM 9.0 :)
LLVM 9.0 starts to support .maps.
There is no dependency on pahole.
LLVM 9.0.0 is still very new:
 - 19 September 2019: LLVM 9.0.0 is now available

For my XDP-tutorial[1], I cannot required people to have this new llvm
version.  But I would like to teach people about this new syntax (note,
I can upgrade libbpf version via git-submodule, and update bpf_helpers.h).

To Andrii, any recommendations on how I can do the transition?

I'm thinking, it should be possible to define both ELF-object sections
SEC "maps" and ".maps" at the same time. But how does libbpf handle that?
(Who takes precedence?)
Yes, libbpf will load both maps and .maps. There is no precedence,
they are treated equally and are just added to the list of maps. But
if there is .maps section without associated BTF, bpf_object__open
will fail (because BTF is mandatory at that point).

(Alternatively, I can detect the LLVM version, in the Makefile, and have
a #ifdef define in the code)
--
Best regards,
  Jesper Dangaard Brouer
  MSc.CS, Principal Kernel Engineer at Red Hat
  LinkedIn: http://www.linkedin.com/in/brouer

[1] https://github.com/xdp-project/xdp-tutorial
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help