From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752775AbcFZLYt (ORCPT ); Sun, 26 Jun 2016 07:24:49 -0400 Received: from szxga04-in.huawei.com ([58.251.152.52]:21951 "EHLO szxga04-in.huawei.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1752540AbcFZLWL (ORCPT ); Sun, 26 Jun 2016 07:22:11 -0400 From: He Kuang To: , , , , , , , , CC: Subject: [RFC PATCH v2 25/26] perf bpf: Implement run_ubpf_program Date: Sun, 26 Jun 2016 11:21:17 +0000 Message-ID: <1466940078-65581-26-git-send-email-hekuang@huawei.com> X-Mailer: git-send-email 1.8.3.4 In-Reply-To: <1466940078-65581-1-git-send-email-hekuang@huawei.com> References: <1466940078-65581-1-git-send-email-hekuang@huawei.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.107.193.250] X-CFilter-Loop: Reflected X-Mirapoint-Virus-RAPID-Raw: score=unknown(0), refid=str=0001.0A090202.576FBAD8.0052,ss=1,re=0.000,recu=0.000,reip=0.000,cl=1,cld=1,fgs=0, ip=0.0.0.0, so=2014-11-16 11:51:01, dmn=2013-03-21 17:37:32 X-Mirapoint-Loop-Id: 9558fd36766b0d3b511d0d97226c78ed Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Fill up the run_ubpf_program slot by fetching the ubpf entry and call __bpf_prog_run(). Signed-off-by: He Kuang Signed-off-by: Wang Nan --- tools/perf/util/ubpf-hooks.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/tools/perf/util/ubpf-hooks.c b/tools/perf/util/ubpf-hooks.c index 6ffe344..da19fab 100644 --- a/tools/perf/util/ubpf-hooks.c +++ b/tools/perf/util/ubpf-hooks.c @@ -8,12 +8,25 @@ #include #include #include "ubpf-hooks.h" +#include "bpf-vm.h" #include "debug.h" -static int run_ubpf_program(struct bpf_program *prog __maybe_unused, - void *mem __maybe_unused, size_t len __maybe_unused) +static int +run_ubpf_program(struct bpf_program *prog, void *mem, size_t len) { - return 0; + struct ubpf_entry *entry; + int ret; + + entry = bpf_program__vm(prog); + if (!entry) { + WARN_ONCE(!entry, "Unable to fetch entry from UBPF program\n"); + return -EINVAL; + } + + ret = __bpf_prog_run(mem, entry->insns, len); + pr_debug("program %s returns %d\n", + bpf_program__title(prog, false), ret); + return ret; } static int -- 1.8.5.2