From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753335AbdBUODH (ORCPT ); Tue, 21 Feb 2017 09:03:07 -0500 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]:41226 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752584AbdBUOC7 (ORCPT ); Tue, 21 Feb 2017 09:02:59 -0500 Subject: [PATCH v7 5/8] perf tool: add print support for namespace events From: Hari Bathini To: ast@fb.com, peterz@infradead.org, lkml , acme@kernel.org, alexander.shishkin@linux.intel.com, mingo@redhat.com Cc: daniel@iogearbox.net, rostedt@goodmis.org, Ananth N Mavinakayanahalli , ebiederm@xmission.com, sargun@sargun.me, Aravinda Prasad , brendan.d.gregg@gmail.com, jolsa@redhat.com Date: Tue, 21 Feb 2017 19:31:52 +0530 In-Reply-To: <148768564246.30285.16450228018975882950.stgit@hbathini.in.ibm.com> References: <148768564246.30285.16450228018975882950.stgit@hbathini.in.ibm.com> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-TM-AS-MML: disable X-Content-Scanned: Fidelis XPS MAILER x-cbid: 17022114-0016-0000-0000-0000021C326D X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 17022114-0017-0000-0000-00000674EC42 Message-Id: <148768571212.30285.8979607887293145010.stgit@hbathini.in.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2017-02-21_11:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=0 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1612050000 definitions=main-1702210135 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Add print support for events of type PERF_RECORD_NAMESPACES. Signed-off-by: Hari Bathini --- tools/perf/util/event.c | 30 ++++++++++++++++++++++++++++++ tools/perf/util/event.h | 1 + tools/perf/util/machine.c | 3 +++ 3 files changed, 34 insertions(+) diff --git a/tools/perf/util/event.c b/tools/perf/util/event.c index c8c112a..43b6a8f 100644 --- a/tools/perf/util/event.c +++ b/tools/perf/util/event.c @@ -1104,6 +1104,33 @@ size_t perf_event__fprintf_comm(union perf_event *event, FILE *fp) return fprintf(fp, "%s: %s:%d/%d\n", s, event->comm.comm, event->comm.pid, event->comm.tid); } +size_t perf_event__fprintf_namespaces(union perf_event *event, FILE *fp) +{ + size_t ret = 0; + struct perf_ns_link_info *ns_link_info; + u32 nr_namespaces, idx; + + ns_link_info = event->namespaces.link_info; + nr_namespaces = event->namespaces.nr_namespaces; + + ret += fprintf(fp, " %d/%d - nr_namespaces: %u\n\t[", + event->namespaces.pid, + event->namespaces.tid, + nr_namespaces); + + for (idx = 0; idx < nr_namespaces; idx++) { + if (idx && (idx % 4 == 0)) + ret += fprintf(fp, "\n\t "); + + ret += fprintf(fp, "%u/%s: %lu/0x%lx%s", idx, + perf_ns__name(idx), (u64)ns_link_info[idx].dev, + (u64)ns_link_info[idx].ino, + ((idx + 1) != nr_namespaces) ? ", " : "]\n\n"); + } + + return ret; +} + int perf_event__process_comm(struct perf_tool *tool __maybe_unused, union perf_event *event, struct perf_sample *sample, @@ -1300,6 +1327,9 @@ size_t perf_event__fprintf(union perf_event *event, FILE *fp) case PERF_RECORD_MMAP: ret += perf_event__fprintf_mmap(event, fp); break; + case PERF_RECORD_NAMESPACES: + ret += perf_event__fprintf_namespaces(event, fp); + break; case PERF_RECORD_MMAP2: ret += perf_event__fprintf_mmap2(event, fp); break; diff --git a/tools/perf/util/event.h b/tools/perf/util/event.h index c73ad47..8eb470b 100644 --- a/tools/perf/util/event.h +++ b/tools/perf/util/event.h @@ -673,6 +673,7 @@ size_t perf_event__fprintf_itrace_start(union perf_event *event, FILE *fp); size_t perf_event__fprintf_switch(union perf_event *event, FILE *fp); size_t perf_event__fprintf_thread_map(union perf_event *event, FILE *fp); size_t perf_event__fprintf_cpu_map(union perf_event *event, FILE *fp); +size_t perf_event__fprintf_namespaces(union perf_event *event, FILE *fp); size_t perf_event__fprintf(union perf_event *event, FILE *fp); u64 kallsyms__get_function_start(const char *kallsyms_filename, diff --git a/tools/perf/util/machine.c b/tools/perf/util/machine.c index 060fabb..5f46ad0 100644 --- a/tools/perf/util/machine.c +++ b/tools/perf/util/machine.c @@ -519,6 +519,9 @@ int machine__process_namespaces_event(struct machine *machine __maybe_unused, "\nWARNING: perf tool seems to support more namespaces than" " the kernel.\nTry updating the kernel..\n\n"); + if (dump_trace) + perf_event__fprintf_namespaces(event, stdout); + if (thread == NULL || thread__set_namespaces(thread, sample->time, &event->namespaces)) { dump_printf("problem processing PERF_RECORD_NAMESPACES, skipping event.\n");