From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757099AbbGGLoP (ORCPT ); Tue, 7 Jul 2015 07:44:15 -0400 Received: from szxga01-in.huawei.com ([58.251.152.64]:59188 "EHLO szxga01-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756984AbbGGLnv (ORCPT ); Tue, 7 Jul 2015 07:43:51 -0400 From: He Kuang To: , , , , , , , CC: , , Subject: [RFC PATCH v3 1/2] tracing: Add new trace type for bpf data output Date: Tue, 7 Jul 2015 11:43:05 +0000 Message-ID: <1436269386-72037-2-git-send-email-hekuang@huawei.com> X-Mailer: git-send-email 1.8.3.4 In-Reply-To: <1436269386-72037-1-git-send-email-hekuang@huawei.com> References: <1436269386-72037-1-git-send-email-hekuang@huawei.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.107.197.210] X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Add TRACE_BPF as a new trace type to establish infrastruction for bpf output data to perf. This new trace type creates a static singleton ftrace entry in kernel, userspace perf tools can detect and use this new ftrace entry just as using the existing tracepoint events. This added a new bpf ftrace entry in debugfs: /sys/kernel/debug/tracing/events/ftrace/bpf Userspace perf tools detect the new tracepoint event as: ftrace:bpf [Tracepoint event] Data in ring-buffer of perf events added to this ftrace:bpf event can be polled out, sample types and other attributes can be adjusted to those events directly without touching the original kprobe events. Signed-off-by: He Kuang --- kernel/trace/trace.h | 1 + kernel/trace/trace_entries.h | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h index d261201..d135f55 100644 --- a/kernel/trace/trace.h +++ b/kernel/trace/trace.h @@ -38,6 +38,7 @@ enum trace_type { TRACE_USER_STACK, TRACE_BLK, TRACE_BPUTS, + TRACE_BPF, __TRACE_LAST_TYPE, }; diff --git a/kernel/trace/trace_entries.h b/kernel/trace/trace_entries.h index ee7b94a..c237212 100644 --- a/kernel/trace/trace_entries.h +++ b/kernel/trace/trace_entries.h @@ -322,3 +322,21 @@ FTRACE_ENTRY(branch, trace_branch, FILTER_OTHER ); +#define TRACE_BPF_MAX_ENTRY 64 +#define TRACE_BPF_MAX_SIZE (TRACE_BPF_MAX_ENTRY * sizeof(u64)) + +FTRACE_ENTRY_REG(bpf, trace_bpf, + + TRACE_BPF, + + F_STRUCT( + __field(long, size) + __array(u64, raw_data, TRACE_BPF_MAX_ENTRY) + ), + + F_printk("%ld: (%016llx, ...)", __entry->size, __entry->raw_data[0]), + + FILTER_OTHER, + + perf_ftrace_event_register +); -- 1.8.5.2