On 2016/04/27 09:30AM, Jesper Dangaard Brouer wrote: > Getting started with using examples in samples/bpf/ is not > straightforward. There are several dependencies, and specific > versions of these dependencies. > > Just compiling the example tool is also slightly obscure, e.g. one > need to call make like: > > make samples/bpf/ > > Do notice the "/" slash after the directory name. > > Signed-off-by: Jesper Dangaard Brouer <brouer@xxxxxxxxxx> > --- > samples/bpf/README.rst | 75 ++++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 75 insertions(+) > create mode 100644 samples/bpf/README.rst Thanks for adding this! A few nits... > > diff --git a/samples/bpf/README.rst b/samples/bpf/README.rst > new file mode 100644 > index 000000000000..1fa157db905b > --- /dev/null > +++ b/samples/bpf/README.rst > @@ -0,0 +1,75 @@ > +eBPF sample programs > +==================== > + > +This kernel samples/bpf directory contains a mini eBPF library, test ^^^^^^^^^^^^^^^^^^ 'This directory contains' should suffice. > +stubs, verifier test-suite and examples for using eBPF. > + > +Build dependencies > +================== > + > +Compiling requires having installed: > + * clang >= version 3.4.0 > + * llvm >= version 3.7.1 > + > +Note that LLVM's tool 'llc' must support target 'bpf', list with command:: > + > + $ llc --version 'llc --version | grep bpf' is probably simpler? > + LLVM (http://llvm.org/): > + LLVM version 3.x.y > + [...] > + Host CPU: xxx > + > + Registered Targets: > + [...] > + bpf - BPF (host endian) > + bpfeb - BPF (big endian) > + bpfel - BPF (little endian) > + [...] > + > +Kernel headers > +-------------- > + > +There are usually dependencies to header files of the current kernel. > +To avoid installing devel kernel headers system wide, as a normal > +user, simply call:: > + > + make headers_install > + > +This will creates a local "usr/include" directory in the git/build top > +level directory, that the make system automatically pickup first. > + > +Compiling > +========= > + > +For compiling goto kernel top level build directory and run make like:: For building the BPF samples, issue the below command from the kernel root directory: > + > + make samples/bpf/ > + > +Do notice the "/" slash after the directory name. > + > +Manually compiling LLVM with 'bpf' support > +------------------------------------------ > + > +Since version 3.7.0, LLVM adds a proper LLVM backend target for the > +BPF bytecode architecture. > + > +By default llvm will build all non-experimental backends including bpf. > +To generate a smaller llc binary one can use:: > + > + -DLLVM_TARGETS_TO_BUILD="BPF;X86" Is the X86 target really needed? > + > +Quick sniplet for manually compiling LLVM and clang > +(build dependencies are cmake and gcc-c++):: > + > + $ git clone http://llvm.org/git/llvm.git > + $ cd llvm/tools > + $ git clone --depth 1 http://llvm.org/git/clang.git > + $ cd ..; mkdir build; cd build > + $ cmake .. -DLLVM_TARGETS_TO_BUILD="BPF;X86" ^^^ Here too. - Naveen > + $ make -j $(getconf _NPROCESSORS_ONLN) > + > +It is also possible to point make to the newly compiled 'llc' command > +via redefining LLC on the make command line:: > + > + make samples/bpf/ LLC=~/git/llvm/build/bin/llc > + > -- To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html