From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Ingo Molnar <mingo@kernel.org>
Cc: linux-kernel@vger.kernel.org, Linux Weekly News <lwn@lwn.net>,
Andi Kleen <ak@linux.intel.com>,
Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>,
Madhavan Srinivasan <maddy@linux.vnet.ibm.com>,
Peter Zijlstra <peterz@infradead.org>,
linuxppc-dev@lists.ozlabs.org,
Arnaldo Carvalho de Melo <acme@redhat.com>
Subject: [PATCH 12/22] perf tools: Query terminal width and use in perf list
Date: Mon, 3 Oct 2016 23:37:11 -0300 [thread overview]
Message-ID: <1475548641-12182-13-git-send-email-acme@kernel.org> (raw)
In-Reply-To: <1475548641-12182-1-git-send-email-acme@kernel.org>
From: Andi Kleen <ak@linux.intel.com>
Automatically adapt the now wider and word wrapped perf list output to
wider terminals. This requires querying the terminal before the auto
pager takes over, and exporting this information from the pager
subsystem.
Signed-off-by: Andi Kleen <ak@linux.intel.com>
Signed-off-by: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
Acked-by: Ingo Molnar <mingo@kernel.org>
Acked-by: Jiri Olsa <jolsa@redhat.com>
Acked-by: Namhyung Kim <namhyung@kernel.org>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Madhavan Srinivasan <maddy@linux.vnet.ibm.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: linuxppc-dev@lists.ozlabs.org
Link: http://lkml.kernel.org/r/1473978296-20712-8-git-send-email-sukadev@linux.vnet.ibm.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
| 16 ++++++++++++++++
| 1 +
tools/perf/util/pmu.c | 3 ++-
3 files changed, 19 insertions(+), 1 deletion(-)
--git a/tools/lib/subcmd/pager.c b/tools/lib/subcmd/pager.c
index d50f3b58606b..6518bea926d6 100644
--- a/tools/lib/subcmd/pager.c
+++ b/tools/lib/subcmd/pager.c
@@ -3,6 +3,7 @@
#include <stdio.h>
#include <string.h>
#include <signal.h>
+#include <sys/ioctl.h>
#include "pager.h"
#include "run-command.h"
#include "sigchain.h"
@@ -14,6 +15,7 @@
*/
static int spawned_pager;
+static int pager_columns;
void pager_init(const char *pager_env)
{
@@ -58,9 +60,12 @@ static void wait_for_pager_signal(int signo)
void setup_pager(void)
{
const char *pager = getenv(subcmd_config.pager_env);
+ struct winsize sz;
if (!isatty(1))
return;
+ if (ioctl(1, TIOCGWINSZ, &sz) == 0)
+ pager_columns = sz.ws_col;
if (!pager)
pager = getenv("PAGER");
if (!(pager || access("/usr/bin/pager", X_OK)))
@@ -98,3 +103,14 @@ int pager_in_use(void)
{
return spawned_pager;
}
+
+int pager_get_columns(void)
+{
+ char *s;
+
+ s = getenv("COLUMNS");
+ if (s)
+ return atoi(s);
+
+ return (pager_columns ? pager_columns : 80) - 2;
+}
--git a/tools/lib/subcmd/pager.h b/tools/lib/subcmd/pager.h
index 8b83714ecf73..623f5542d05d 100644
--- a/tools/lib/subcmd/pager.h
+++ b/tools/lib/subcmd/pager.h
@@ -5,5 +5,6 @@ extern void pager_init(const char *pager_env);
extern void setup_pager(void);
extern int pager_in_use(void);
+extern int pager_get_columns(void);
#endif /* __SUBCMD_PAGER_H */
diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c
index 9857fb14ea86..7b46e772f5f9 100644
--- a/tools/perf/util/pmu.c
+++ b/tools/perf/util/pmu.c
@@ -14,6 +14,7 @@
#include "cpumap.h"
#include "header.h"
#include "pmu-events/pmu-events.h"
+#include "cache.h"
struct perf_pmu_format {
char *name;
@@ -1092,7 +1093,7 @@ void print_pmu_events(const char *event_glob, bool name_only)
int len, j;
struct pair *aliases;
int numdesc = 0;
- int columns = 78;
+ int columns = pager_get_columns();
pmu = NULL;
len = 0;
--
2.7.4
next prev parent reply other threads:[~2016-10-04 2:37 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-10-04 2:36 [GIT PULL 00/22] perf/core improvements and fixes Arnaldo Carvalho de Melo
2016-10-04 2:37 ` [PATCH 03/22] tools build: Add support for host programs format Arnaldo Carvalho de Melo
2016-10-04 2:37 ` [PATCH 04/22] tools build: Make fixdep a hostprog Arnaldo Carvalho de Melo
2016-10-04 2:37 ` [PATCH 05/22] perf tools: Add jsmn `jasmine' JSON parser Arnaldo Carvalho de Melo
2016-10-04 2:37 ` [PATCH 06/22] perf jevents: Program to convert JSON file Arnaldo Carvalho de Melo
2016-10-04 2:37 ` [PATCH 07/22] perf pmu: Use pmu_events table to create aliases Arnaldo Carvalho de Melo
2016-10-04 2:37 ` [PATCH 08/22] perf powerpc: Support CPU ID matching for Powerpc Arnaldo Carvalho de Melo
2016-10-04 2:37 ` [PATCH 09/22] perf tools: Support CPU id matching for x86 v2 Arnaldo Carvalho de Melo
2016-10-04 2:37 ` [PATCH 10/22] perf jevents: Handle header line in mapfile Arnaldo Carvalho de Melo
2016-10-04 2:37 ` [PATCH 11/22] perf pmu: Support alias descriptions Arnaldo Carvalho de Melo
2016-10-04 2:37 ` Arnaldo Carvalho de Melo [this message]
2016-10-04 2:37 ` [PATCH 13/22] perf list: Add a --no-desc flag Arnaldo Carvalho de Melo
2016-10-04 2:37 ` [PATCH 14/22] perf pmu: Add override support for event list CPUID Arnaldo Carvalho de Melo
2016-10-04 2:37 ` [PATCH 15/22] perf jevents: Add support for long descriptions Arnaldo Carvalho de Melo
2016-10-04 2:37 ` [PATCH 16/22] perf list: Support long jevents descriptions Arnaldo Carvalho de Melo
2016-10-04 2:37 ` [PATCH 17/22] perf list jevents: Add support for event list topics Arnaldo Carvalho de Melo
2016-10-04 2:37 ` [PATCH 18/22] perf tools: Add README for info on parsing JSON/map files Arnaldo Carvalho de Melo
2016-10-04 2:37 ` [PATCH 19/22] perf tools: Allow period= in perf stat CPU event descriptions Arnaldo Carvalho de Melo
2016-10-04 2:37 ` [PATCH 20/22] perf tools: Make alias matching case-insensitive Arnaldo Carvalho de Melo
2016-10-04 2:37 ` [PATCH 21/22] perf pmu-events: Fix fixed counters on Intel Arnaldo Carvalho de Melo
2016-10-04 2:37 ` [PATCH 22/22] perf pmu-events: Add Skylake frontend MSR support Arnaldo Carvalho de Melo
2016-10-04 8:07 ` [GIT PULL 00/22] perf/core improvements and fixes Ingo Molnar
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=1475548641-12182-13-git-send-email-acme@kernel.org \
--to=acme@kernel.org \
--cc=acme@redhat.com \
--cc=ak@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=lwn@lwn.net \
--cc=maddy@linux.vnet.ibm.com \
--cc=mingo@kernel.org \
--cc=peterz@infradead.org \
--cc=sukadev@linux.vnet.ibm.com \
/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;
as well as URLs for NNTP newsgroup(s).