mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Alexei Starovoitov <alexei.starovoitov@gmail.com>
To: Wang Nan <wangnan0@huawei.com>
Cc: ast@kernel.org, agartrell@fb.com, acme@redhat.com,
	bblanco@plumgrid.com, daniel@iogearbox.net,
	daniel.wagner@bmw-carit.de, davem@davemloft.net,
	mingo@kernel.org, jolsa@kernel.org, xiakaixu@huawei.com,
	holzheu@linux.vnet.ibm.com, yang.shi@linaro.org,
	linux-kernel@vger.kernel.org, pi3orama@163.com
Subject: Re: [PATCH 08/10] bpf samples: Add utils.[ch] for using BPF
Date: Thu, 17 Dec 2015 15:11:39 -0800	[thread overview]
Message-ID: <20151217231138.GA34078@ast-mbp.thefacebook.com> (raw)
In-Reply-To: <1450329794-161948-9-git-send-email-wangnan0@huawei.com>

On Thu, Dec 17, 2015 at 05:23:12AM +0000, Wang Nan wrote:
> We are going to uses libbpf to replace old libbpf.[ch] and
> bpf_load.[ch]. This is the first patch of this work. In this patch,
> several macros and helpers in libbpf.[ch] and bpf_load.[ch] are
> merged into utils.[ch]. utils.[ch] utilizes libbpf in tools/lib to
> deal with BPF related things. They would be compiled after Makefile
> changes.
> 
> Signed-off-by: Wang Nan <wangnan0@huawei.com>
...
> +#define IS_ERR_VALUE(x) unlikely((x) >= (unsigned long)-MAX_ERRNO)
> +
> +static inline void * __must_check ERR_PTR(long error_)
> +{
> +	return (void *) error_;
> +}
> +
> +static inline long __must_check PTR_ERR(__force const void *ptr)
> +{
> +	return (long) ptr;
> +}
> +
> +static inline bool __must_check IS_ERR(__force const void *ptr)
> +{
> +	return IS_ERR_VALUE((unsigned long)ptr);
> +}

why copy paste this? I don't see the code that uses that.

> +	bpf_object__for_each_program(prog, obj) {
> +		const char *event = bpf_program__title(prog, false);
> +		int fd, err;
> +
> +		LIBBPF_PTR_ASSERT(event, goto errout);
> +		__LIBBPF_ASSERT(fd = bpf_program__nth_fd(prog, 0),
> +				>= 0,
> +				goto errout);
> +
> +		if (strncmp(event, "kprobe/", 7) == 0)
> +			err = create_kprobes(fd, event + 7, true);
> +		else if (strncmp(event, "kretprobe/", 10) == 0)
> +			err = create_kprobes(fd, event + 10, false);

I have a feeling that all bpf+socket, tcbpf1_kernc and trace_output_*.c
are broken, since I don't see a code that attaches programs to sockets
and to perf_event.
How did you test it?

> diff --git a/samples/bpf/utils.h b/samples/bpf/utils.h
> new file mode 100644
> index 0000000..5962a68
> --- /dev/null
> +++ b/samples/bpf/utils.h
> @@ -0,0 +1,217 @@
> +#ifndef __SAMPELS_UTILS_H
> +#define __SAMPELS_UTILS_H
> +
> +#include <bpf/libbpf.h>
> +#include <bpf/bpf.h>
> +
> +/* ALU ops on registers, bpf_add|sub|...: dst_reg += src_reg */
> +
> +#define BPF_ALU64_REG(OP, DST, SRC)				\
> +	((struct bpf_insn) {					\
> +		.code  = BPF_ALU64 | BPF_OP(OP) | BPF_X,	\
> +		.dst_reg = DST,					\
> +		.src_reg = SRC,					\
> +		.off   = 0,					\
> +		.imm   = 0 })

this probably belongs in tools/lib/bpf/bpf.h instead of samples.

The whole set depends on changes in perf/core tree, but
in net-next we have extra commit 30b50aa612018, so I don't see an easy way
to route this patch without creating across-tree merge conflicts during
merge window.
I'd suggest to apply all required work to tools/lib/bpf/ into perf/core
and leave samples/bpf/ after merge window.


  reply	other threads:[~2015-12-17 23:11 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-17  5:23 [PATCH 00/10] bpf samples: Uses libbpf in tools/lib to do BPF operations Wang Nan
2015-12-17  5:23 ` [PATCH 01/10] bpf samples: bpf: Fix tracex5_kern.c compiling error Wang Nan
2015-12-17  5:23 ` [PATCH 02/10] bpf tools: Define LD and RM in Makefile for 'make -R' Wang Nan
2015-12-17  5:23 ` [PATCH 03/10] bpf tools: Add const decoretor to 'license' and 'insns' for bpf_load_program() Wang Nan
2015-12-17  5:23 ` [PATCH 04/10] bpf tools: Switch to uapi style type names Wang Nan
2015-12-17  5:23 ` [PATCH 05/10] bpf tools: Support load different type of programs Wang Nan
2015-12-17  5:23 ` [PATCH 06/10] bpf tools: Support new map operations Wang Nan
2015-12-17  6:06   ` Wangnan (F)
2015-12-17  6:09   ` [PATCH v2 " Wang Nan
2015-12-17  5:23 ` [PATCH 07/10] bpf tools: Support BPF_OBJ_PIN and BPF_OBJ_GET Wang Nan
2015-12-17  5:23 ` [PATCH 08/10] bpf samples: Add utils.[ch] for using BPF Wang Nan
2015-12-17 23:11   ` Alexei Starovoitov [this message]
2015-12-18  1:47     ` Wangnan (F)
2015-12-18  6:19       ` Alexei Starovoitov
2015-12-18  7:04         ` Wangnan (F)
2015-12-18  7:10           ` Wangnan (F)
2015-12-18 10:57           ` Daniel Borkmann
2015-12-18 11:18             ` pi3orama
2015-12-18 11:24               ` Daniel Borkmann
2015-12-19  0:35           ` Alexei Starovoitov
2015-12-17  5:23 ` [PATCH 09/10] bpf samples: Uses libbpf in tools/lib to deal with BPF operations Wang Nan
2015-12-17  5:23 ` [PATCH 10/10] bpf samples: Remove old BPF helpers Wang Nan
2015-12-17  6:38 ` [PATCH 00/10] bpf samples: Uses libbpf in tools/lib to do BPF operations Daniel Wagner
2015-12-17  6:51   ` Wangnan (F)
2015-12-17  7:03     ` Daniel Wagner
2015-12-17  8:29       ` Daniel Wagner
2015-12-17 10:09         ` Wangnan (F)
2015-12-17 13:46           ` Daniel Wagner
2015-12-18  3:04             ` Wangnan (F)
2015-12-18  8:49               ` Daniel Wagner
2015-12-18 10:56                 ` [PATCH] tools build: Output more data during feature detection Wang Nan
2015-12-18 11:03                 ` [PATCH 00/10] bpf samples: Uses libbpf in tools/lib to do BPF operations Wangnan (F)
2015-12-18 12:55                   ` Daniel Wagner
2015-12-18 14:13                     ` pi3orama
     [not found]                     ` <66E52D4A-BA1C-456A-8E6F-975E07C083EE@163.com>
2015-12-18 14:22                       ` Daniel Wagner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20151217231138.GA34078@ast-mbp.thefacebook.com \
    --to=alexei.starovoitov@gmail.com \
    --cc=acme@redhat.com \
    --cc=agartrell@fb.com \
    --cc=ast@kernel.org \
    --cc=bblanco@plumgrid.com \
    --cc=daniel.wagner@bmw-carit.de \
    --cc=daniel@iogearbox.net \
    --cc=davem@davemloft.net \
    --cc=holzheu@linux.vnet.ibm.com \
    --cc=jolsa@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=pi3orama@163.com \
    --cc=wangnan0@huawei.com \
    --cc=xiakaixu@huawei.com \
    --cc=yang.shi@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®