Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752125AbbLQXLp (ORCPT ); Thu, 17 Dec 2015 18:11:45 -0500 Received: from mail-pf0-f170.google.com ([209.85.192.170]:34881 "EHLO mail-pf0-f170.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751273AbbLQXLn (ORCPT ); Thu, 17 Dec 2015 18:11:43 -0500 Date: Thu, 17 Dec 2015 15:11:39 -0800 From: Alexei Starovoitov To: Wang Nan 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 Message-ID: <20151217231138.GA34078@ast-mbp.thefacebook.com> References: <1450329794-161948-1-git-send-email-wangnan0@huawei.com> <1450329794-161948-9-git-send-email-wangnan0@huawei.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1450329794-161948-9-git-send-email-wangnan0@huawei.com> User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2788 Lines: 84 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 ... > +#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 > +#include > + > +/* 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. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/