* [GIT PULL 0/4] perf/core fixes and improvements
@ 2010-08-07 1:34 Arnaldo Carvalho de Melo
2010-08-07 6:43 ` Ingo Molnar
0 siblings, 1 reply; 13+ messages in thread
From: Arnaldo Carvalho de Melo @ 2010-08-07 1:34 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Arnaldo Carvalho de Melo, Frederic Weisbecker,
Ingo Molnar, Masami Hiramatsu, Mike Galbraith, Paul Mackerras,
Peter Zijlstra, Stephane Eranian
Hi Ingo,
Please pull from:
git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux-2.6 perf/core
Regards,
- Arnaldo
Arnaldo Carvalho de Melo (2):
perf ui: Introduce list_head based generic ui_browser refresh routine
perf ui: Start breaking down newt.c into multiple files
Masami Hiramatsu (2):
perf probe: Fix to copy the type for raw parameters
perf probe: Fix memory leaks in add_perf_probe_events
tools/perf/Makefile | 10 +-
tools/perf/util/include/linux/list.h | 8 +
tools/perf/util/newt.c | 343 +++-------------------------------
tools/perf/util/probe-event.c | 11 +-
tools/perf/util/probe-finder.c | 8 +-
tools/perf/util/ui/browser.c | 313 +++++++++++++++++++++++++++++++
tools/perf/util/ui/browser.h | 43 +++++
7 files changed, 408 insertions(+), 328 deletions(-)
create mode 100644 tools/perf/util/ui/browser.c
create mode 100644 tools/perf/util/ui/browser.h
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [GIT PULL 0/4] perf/core fixes and improvements
2010-08-07 1:34 Arnaldo Carvalho de Melo
@ 2010-08-07 6:43 ` Ingo Molnar
0 siblings, 0 replies; 13+ messages in thread
From: Ingo Molnar @ 2010-08-07 6:43 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: linux-kernel, Frederic Weisbecker, Masami Hiramatsu,
Mike Galbraith, Paul Mackerras, Peter Zijlstra, Stephane Eranian
* Arnaldo Carvalho de Melo <acme@infradead.org> wrote:
> Hi Ingo,
>
> Please pull from:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux-2.6 perf/core
>
> Regards,
>
> - Arnaldo
>
> Arnaldo Carvalho de Melo (2):
> perf ui: Introduce list_head based generic ui_browser refresh routine
> perf ui: Start breaking down newt.c into multiple files
>
> Masami Hiramatsu (2):
> perf probe: Fix to copy the type for raw parameters
> perf probe: Fix memory leaks in add_perf_probe_events
>
> tools/perf/Makefile | 10 +-
> tools/perf/util/include/linux/list.h | 8 +
> tools/perf/util/newt.c | 343 +++-------------------------------
> tools/perf/util/probe-event.c | 11 +-
> tools/perf/util/probe-finder.c | 8 +-
> tools/perf/util/ui/browser.c | 313 +++++++++++++++++++++++++++++++
> tools/perf/util/ui/browser.h | 43 +++++
> 7 files changed, 408 insertions(+), 328 deletions(-)
> create mode 100644 tools/perf/util/ui/browser.c
> create mode 100644 tools/perf/util/ui/browser.h
Pulled, thanks Arnaldo!
Ingo
^ permalink raw reply [flat|nested] 13+ messages in thread
* [GIT PULL 0/4] perf/core fixes and improvements
@ 2011-03-10 19:29 Arnaldo Carvalho de Melo
0 siblings, 0 replies; 13+ messages in thread
From: Arnaldo Carvalho de Melo @ 2011-03-10 19:29 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Arnaldo Carvalho de Melo, Frederic Weisbecker,
Han Pingtian, Ingo Molnar, Jiri Olsa, Mike Galbraith,
Paul Mackerras, Peter Zijlstra, Stephane Eranian, Thomas Gleixner,
Tom Zanussi, Arnaldo Carvalho de Melo
Hi Ingo,
Please consider pulling from:
git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux-2.6 perf/core
Regards,
- Arnaldo
Arnaldo Carvalho de Melo (2):
perf session: Use evlist/evsel for managing perf.data attributes
perf header: Stop using 'self'
Jiri Olsa (2):
perf top: Fix events overflow in top command
perf top: Don't let events to eat up whole header line
tools/perf/builtin-record.c | 101 ++++-------
tools/perf/builtin-report.c | 4 +-
tools/perf/builtin-top.c | 5 +-
tools/perf/util/evlist.c | 26 ++-
tools/perf/util/evlist.h | 4 +-
tools/perf/util/evsel.c | 21 ++-
tools/perf/util/evsel.h | 9 +-
tools/perf/util/header.c | 422 +++++++++++++++++++------------------------
tools/perf/util/header.h | 48 ++----
tools/perf/util/session.c | 74 +-------
tools/perf/util/session.h | 2 -
tools/perf/util/top.c | 48 ++++--
12 files changed, 317 insertions(+), 447 deletions(-)
^ permalink raw reply [flat|nested] 13+ messages in thread
* [GIT PULL 0/4] perf/core fixes and improvements
@ 2011-10-23 19:12 Arnaldo Carvalho de Melo
2011-10-23 19:12 ` [PATCH 1/4] perf tools: Fix tracing info recording Arnaldo Carvalho de Melo
` (4 more replies)
0 siblings, 5 replies; 13+ messages in thread
From: Arnaldo Carvalho de Melo @ 2011-10-23 19:12 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Arnaldo Carvalho de Melo, Anton Blanchard,
David Ahern, Eric Dumazet, Frederic Weisbecker, Ingo Molnar,
Jiri Olsa, Mike Galbraith, Neil Horman, Paul Mackerras,
Pekka Enberg, Peter Zijlstra, Ricardo Ribalda Delgado,
Stephane Eranian, Steven Rostedt, arnaldo.melo
Hi Ingo,
Please consider pulling from:
git://github.com/acmel/linux.git perf/core
Regards,
- Arnaldo
Arnaldo Carvalho de Melo (2):
perf ui browser: Use libslang to read keys
perf hists browser: Refuse 'a' hotkey on non symbolic views
Jiri Olsa (1):
perf tools: Fix tracing info recording
Ricardo Ribalda Delgado (1):
perf symbols: Increase symbol KSYM_NAME_LEN size
tools/perf/Makefile | 1 +
tools/perf/builtin-annotate.c | 8 +-
tools/perf/util/header.c | 27 +++++++-
tools/perf/util/hist.h | 9 +--
tools/perf/util/symbol.c | 2 +-
tools/perf/util/trace-event-info.c | 112 +++++++++++++++++++++++++-------
tools/perf/util/trace-event.h | 13 ++++-
tools/perf/util/ui/browser.c | 79 +++++++++++++++-------
tools/perf/util/ui/browsers/annotate.c | 19 ++---
tools/perf/util/ui/browsers/hists.c | 40 +++++++-----
tools/perf/util/ui/keysyms.h | 25 +++++++
tools/perf/util/ui/libslang.h | 2 +
tools/perf/util/ui/setup.c | 13 ++++
13 files changed, 256 insertions(+), 94 deletions(-)
create mode 100644 tools/perf/util/ui/keysyms.h
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 1/4] perf tools: Fix tracing info recording
2011-10-23 19:12 [GIT PULL 0/4] perf/core fixes and improvements Arnaldo Carvalho de Melo
@ 2011-10-23 19:12 ` Arnaldo Carvalho de Melo
2011-10-23 19:12 ` [PATCH 2/4] perf ui browser: Use libslang to read keys Arnaldo Carvalho de Melo
` (3 subsequent siblings)
4 siblings, 0 replies; 13+ messages in thread
From: Arnaldo Carvalho de Melo @ 2011-10-23 19:12 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Jiri Olsa, Eric Dumazet, Ingo Molnar, Neil Horman,
Paul Mackerras, Peter Zijlstra, Steven Rostedt,
Arnaldo Carvalho de Melo
From: Jiri Olsa <jolsa@redhat.com>
Fixing the way the tracing information is stored within record command.
The current implementation is causing issues for pipe output.
Following commands fail currently:
perf script syscall-counts ls
perf record -e syscalls:sys_exit_read ls | ./perf report -i -
The tracing information is part of the perf data file. It contains
several files from within the tracing debugfs and procs directories.
Beside some static header files, for each tracing event the format
file is added. The /proc/kallsyms file is also added.
The tracing data are stored with preceeding size. This is causing some
dificulties for pipe output, since there's no way to tell debugfs/proc
file size before reading it. So, for pipe output, all the debugfs files
were read twice. Once to get the overall size and once to store the
content itself. This can cause problem in case any of these file
changed, within the storage time.
To fix this behaviour and ensure the integrity of the tracing data, we:
- read debugfs/proc file into the temp file
- get temp file size and dump it to the pipe
- dump the temp file contents to the pipe
Cc: Eric Dumazet <eric.dumazet@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Neil Horman <nhorman@tuxdriver.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Steven Rostedt <rostedt@goodmis.org>
Link: http://lkml.kernel.org/r/20111020135943.GD2092@jolsa.brq.redhat.com
Signed-off-by: Jiri Olsa <jolsa@redhat.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
| 27 +++++++-
tools/perf/util/trace-event-info.c | 112 ++++++++++++++++++++++++++++--------
tools/perf/util/trace-event.h | 13 ++++-
3 files changed, 123 insertions(+), 29 deletions(-)
--git a/tools/perf/util/header.c b/tools/perf/util/header.c
index 6a9c041..76c0b2c 100644
--- a/tools/perf/util/header.c
+++ b/tools/perf/util/header.c
@@ -2218,15 +2218,29 @@ int perf_event__synthesize_tracing_data(int fd, struct perf_evlist *evlist,
struct perf_session *session __unused)
{
union perf_event ev;
+ struct tracing_data *tdata;
ssize_t size = 0, aligned_size = 0, padding;
int err __used = 0;
+ /*
+ * We are going to store the size of the data followed
+ * by the data contents. Since the fd descriptor is a pipe,
+ * we cannot seek back to store the size of the data once
+ * we know it. Instead we:
+ *
+ * - write the tracing data to the temp file
+ * - get/write the data size to pipe
+ * - write the tracing data from the temp file
+ * to the pipe
+ */
+ tdata = tracing_data_get(&evlist->entries, fd, true);
+ if (!tdata)
+ return -1;
+
memset(&ev, 0, sizeof(ev));
ev.tracing_data.header.type = PERF_RECORD_HEADER_TRACING_DATA;
- size = read_tracing_data_size(fd, &evlist->entries);
- if (size <= 0)
- return size;
+ size = tdata->size;
aligned_size = ALIGN(size, sizeof(u64));
padding = aligned_size - size;
ev.tracing_data.header.size = sizeof(ev.tracing_data);
@@ -2234,7 +2248,12 @@ int perf_event__synthesize_tracing_data(int fd, struct perf_evlist *evlist,
process(&ev, NULL, session);
- err = read_tracing_data(fd, &evlist->entries);
+ /*
+ * The put function will copy all the tracing data
+ * stored in temp file to the pipe.
+ */
+ tracing_data_put(tdata);
+
write_padded(fd, NULL, 0, padding);
return aligned_size;
diff --git a/tools/perf/util/trace-event-info.c b/tools/perf/util/trace-event-info.c
index 3403f81..2d530cf 100644
--- a/tools/perf/util/trace-event-info.c
+++ b/tools/perf/util/trace-event-info.c
@@ -196,7 +196,8 @@ static void record_file(const char *file, size_t hdr_sz)
die("Can't read '%s'", file);
/* put in zeros for file size, then fill true size later */
- write_or_die(&size, hdr_sz);
+ if (hdr_sz)
+ write_or_die(&size, hdr_sz);
do {
r = read(fd, buf, BUFSIZ);
@@ -212,7 +213,7 @@ static void record_file(const char *file, size_t hdr_sz)
if (bigendian())
sizep += sizeof(u64) - hdr_sz;
- if (pwrite(output_fd, sizep, hdr_sz, hdr_pos) < 0)
+ if (hdr_sz && pwrite(output_fd, sizep, hdr_sz, hdr_pos) < 0)
die("writing to %s", output_file);
}
@@ -428,6 +429,19 @@ get_tracepoints_path(struct list_head *pattrs)
return nr_tracepoints > 0 ? path.next : NULL;
}
+static void
+put_tracepoints_path(struct tracepoint_path *tps)
+{
+ while (tps) {
+ struct tracepoint_path *t = tps;
+
+ tps = tps->next;
+ free(t->name);
+ free(t->system);
+ free(t);
+ }
+}
+
bool have_tracepoints(struct list_head *pattrs)
{
struct perf_evsel *pos;
@@ -439,19 +453,11 @@ bool have_tracepoints(struct list_head *pattrs)
return false;
}
-int read_tracing_data(int fd, struct list_head *pattrs)
+static void tracing_data_header(void)
{
- char buf[BUFSIZ];
- struct tracepoint_path *tps = get_tracepoints_path(pattrs);
-
- /*
- * What? No tracepoints? No sense writing anything here, bail out.
- */
- if (tps == NULL)
- return -1;
-
- output_fd = fd;
+ char buf[20];
+ /* just guessing this is someone's birthday.. ;) */
buf[0] = 23;
buf[1] = 8;
buf[2] = 68;
@@ -476,28 +482,86 @@ int read_tracing_data(int fd, struct list_head *pattrs)
/* save page_size */
page_size = sysconf(_SC_PAGESIZE);
write_or_die(&page_size, 4);
+}
+
+struct tracing_data *tracing_data_get(struct list_head *pattrs,
+ int fd, bool temp)
+{
+ struct tracepoint_path *tps;
+ struct tracing_data *tdata;
+
+ output_fd = fd;
+
+ tps = get_tracepoints_path(pattrs);
+ if (!tps)
+ return NULL;
+ tdata = malloc_or_die(sizeof(*tdata));
+ tdata->temp = temp;
+ tdata->size = 0;
+
+ if (temp) {
+ int temp_fd;
+
+ snprintf(tdata->temp_file, sizeof(tdata->temp_file),
+ "/tmp/perf-XXXXXX");
+ if (!mkstemp(tdata->temp_file))
+ die("Can't make temp file");
+
+ temp_fd = open(tdata->temp_file, O_RDWR);
+ if (temp_fd < 0)
+ die("Can't read '%s'", tdata->temp_file);
+
+ /*
+ * Set the temp file the default output, so all the
+ * tracing data are stored into it.
+ */
+ output_fd = temp_fd;
+ }
+
+ tracing_data_header();
read_header_files();
read_ftrace_files(tps);
read_event_files(tps);
read_proc_kallsyms();
read_ftrace_printk();
- return 0;
+ /*
+ * All tracing data are stored by now, we can restore
+ * the default output file in case we used temp file.
+ */
+ if (temp) {
+ tdata->size = lseek(output_fd, 0, SEEK_CUR);
+ close(output_fd);
+ output_fd = fd;
+ }
+
+ put_tracepoints_path(tps);
+ return tdata;
}
-ssize_t read_tracing_data_size(int fd, struct list_head *pattrs)
+void tracing_data_put(struct tracing_data *tdata)
{
- ssize_t size;
- int err = 0;
+ if (tdata->temp) {
+ record_file(tdata->temp_file, 0);
+ unlink(tdata->temp_file);
+ }
- calc_data_size = 1;
- err = read_tracing_data(fd, pattrs);
- size = calc_data_size - 1;
- calc_data_size = 0;
+ free(tdata);
+}
- if (err < 0)
- return err;
+int read_tracing_data(int fd, struct list_head *pattrs)
+{
+ struct tracing_data *tdata;
- return size;
+ /*
+ * We work over the real file, so we can write data
+ * directly, no temp file is needed.
+ */
+ tdata = tracing_data_get(pattrs, fd, false);
+ if (!tdata)
+ return -ENOMEM;
+
+ tracing_data_put(tdata);
+ return 0;
}
diff --git a/tools/perf/util/trace-event.h b/tools/perf/util/trace-event.h
index f674dda..a841008 100644
--- a/tools/perf/util/trace-event.h
+++ b/tools/perf/util/trace-event.h
@@ -263,7 +263,18 @@ void *raw_field_ptr(struct event *event, const char *name, void *data);
unsigned long long eval_flag(const char *flag);
int read_tracing_data(int fd, struct list_head *pattrs);
-ssize_t read_tracing_data_size(int fd, struct list_head *pattrs);
+
+struct tracing_data {
+ /* size is only valid if temp is 'true' */
+ ssize_t size;
+ bool temp;
+ char temp_file[50];
+};
+
+struct tracing_data *tracing_data_get(struct list_head *pattrs,
+ int fd, bool temp);
+void tracing_data_put(struct tracing_data *tdata);
+
/* taken from kernel/trace/trace.h */
enum trace_flag_type {
--
1.6.2.5
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 2/4] perf ui browser: Use libslang to read keys
2011-10-23 19:12 [GIT PULL 0/4] perf/core fixes and improvements Arnaldo Carvalho de Melo
2011-10-23 19:12 ` [PATCH 1/4] perf tools: Fix tracing info recording Arnaldo Carvalho de Melo
@ 2011-10-23 19:12 ` Arnaldo Carvalho de Melo
2011-10-23 19:12 ` [PATCH 3/4] perf hists browser: Refuse 'a' hotkey on non symbolic views Arnaldo Carvalho de Melo
` (2 subsequent siblings)
4 siblings, 0 replies; 13+ messages in thread
From: Arnaldo Carvalho de Melo @ 2011-10-23 19:12 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Arnaldo Carvalho de Melo, David Ahern,
Frederic Weisbecker, Mike Galbraith, Paul Mackerras,
Peter Zijlstra, Stephane Eranian
From: Arnaldo Carvalho de Melo <acme@redhat.com>
Just another step in stopping the use of libnewt in perf.
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/n/tip-uy6s534uqxq8tenh6s3k8ocj@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/Makefile | 1 +
tools/perf/builtin-annotate.c | 8 ++--
tools/perf/util/hist.h | 9 +--
tools/perf/util/ui/browser.c | 79 +++++++++++++++++++++----------
tools/perf/util/ui/browsers/annotate.c | 19 +++----
tools/perf/util/ui/browsers/hists.c | 33 ++++++-------
tools/perf/util/ui/keysyms.h | 25 ++++++++++
tools/perf/util/ui/libslang.h | 2 +
tools/perf/util/ui/setup.c | 13 +++++
9 files changed, 125 insertions(+), 64 deletions(-)
create mode 100644 tools/perf/util/ui/keysyms.h
diff --git a/tools/perf/Makefile b/tools/perf/Makefile
index 37fe930..b98e307 100644
--- a/tools/perf/Makefile
+++ b/tools/perf/Makefile
@@ -472,6 +472,7 @@ else
LIB_H += util/ui/browser.h
LIB_H += util/ui/browsers/map.h
LIB_H += util/ui/helpline.h
+ LIB_H += util/ui/keysyms.h
LIB_H += util/ui/libslang.h
LIB_H += util/ui/progress.h
LIB_H += util/ui/util.h
diff --git a/tools/perf/builtin-annotate.c b/tools/perf/builtin-annotate.c
index 3ea764a..46b4c24 100644
--- a/tools/perf/builtin-annotate.c
+++ b/tools/perf/builtin-annotate.c
@@ -118,7 +118,7 @@ static void hists__find_annotations(struct hists *self, int evidx,
int nr_events)
{
struct rb_node *nd = rb_first(&self->entries), *next;
- int key = KEY_RIGHT;
+ int key = K_RIGHT;
while (nd) {
struct hist_entry *he = rb_entry(nd, struct hist_entry, rb_node);
@@ -130,7 +130,7 @@ static void hists__find_annotations(struct hists *self, int evidx,
notes = symbol__annotation(he->ms.sym);
if (notes->src == NULL) {
find_next:
- if (key == KEY_LEFT)
+ if (key == K_LEFT)
nd = rb_prev(nd);
else
nd = rb_next(nd);
@@ -141,10 +141,10 @@ find_next:
key = hist_entry__tui_annotate(he, evidx, nr_events,
NULL, NULL, 0);
switch (key) {
- case KEY_RIGHT:
+ case K_RIGHT:
next = rb_next(nd);
break;
- case KEY_LEFT:
+ case K_LEFT:
next = rb_prev(nd);
break;
default:
diff --git a/tools/perf/util/hist.h b/tools/perf/util/hist.h
index 575bcbc..ff93ddc 100644
--- a/tools/perf/util/hist.h
+++ b/tools/perf/util/hist.h
@@ -125,16 +125,13 @@ static inline int hist_entry__tui_annotate(struct hist_entry *self __used,
{
return 0;
}
-#define KEY_LEFT -1
-#define KEY_RIGHT -2
+#define K_LEFT -1
+#define K_RIGHT -2
#else
-#include <newt.h>
+#include "ui/keysyms.h"
int hist_entry__tui_annotate(struct hist_entry *he, int evidx, int nr_events,
void(*timer)(void *arg), void *arg, int delay_secs);
-#define KEY_LEFT NEWT_KEY_LEFT
-#define KEY_RIGHT NEWT_KEY_RIGHT
-
int perf_evlist__tui_browse_hists(struct perf_evlist *evlist, const char *help,
void(*timer)(void *arg), void *arg,
int refresh);
diff --git a/tools/perf/util/ui/browser.c b/tools/perf/util/ui/browser.c
index 06fc9eb..5359f37 100644
--- a/tools/perf/util/ui/browser.c
+++ b/tools/perf/util/ui/browser.c
@@ -11,10 +11,9 @@
#include <sys/ttydefaults.h>
#include "browser.h"
#include "helpline.h"
+#include "keysyms.h"
#include "../color.h"
-int newtGetKey(void);
-
static int ui_browser__percent_color(struct ui_browser *browser,
double percent, bool current)
{
@@ -292,16 +291,55 @@ void ui_browser__update_nr_entries(struct ui_browser *browser, u32 nr_entries)
browser->seek(browser, browser->top_idx, SEEK_SET);
}
+static int ui__getch(int delay_secs)
+{
+ struct timeval timeout, *ptimeout = delay_secs ? &timeout : NULL;
+ fd_set read_set;
+ int err, key;
+
+ FD_ZERO(&read_set);
+ FD_SET(0, &read_set);
+
+ if (delay_secs) {
+ timeout.tv_sec = delay_secs;
+ timeout.tv_usec = 0;
+ }
+
+ err = select(1, &read_set, NULL, NULL, ptimeout);
+
+ if (err == 0)
+ return K_TIMER;
+
+ if (err == -1) {
+ if (errno == EINTR)
+ return K_RESIZE;
+ return K_ERROR;
+ }
+
+ key = SLang_getkey();
+ if (key != K_ESC)
+ return key;
+
+ FD_ZERO(&read_set);
+ FD_SET(0, &read_set);
+ timeout.tv_sec = 0;
+ timeout.tv_usec = 20;
+ err = select(1, &read_set, NULL, NULL, &timeout);
+ if (err == 0)
+ return K_ESC;
+
+ SLang_ungetkey(key);
+ return SLkp_getkey();
+}
+
int ui_browser__run(struct ui_browser *self, int delay_secs)
{
int err, key;
- struct timeval timeout, *ptimeout = delay_secs ? &timeout : NULL;
pthread__unblock_sigwinch();
while (1) {
off_t offset;
- fd_set read_set;
pthread_mutex_lock(&ui__lock);
err = __ui_browser__refresh(self);
@@ -310,20 +348,9 @@ int ui_browser__run(struct ui_browser *self, int delay_secs)
if (err < 0)
break;
- FD_ZERO(&read_set);
- FD_SET(0, &read_set);
+ key = ui__getch(delay_secs);
- if (delay_secs) {
- timeout.tv_sec = delay_secs;
- timeout.tv_usec = 0;
- }
-
- err = select(1, &read_set, NULL, NULL, ptimeout);
- if (err > 0 && FD_ISSET(0, &read_set))
- key = newtGetKey();
- else if (err == 0)
- break;
- else {
+ if (key == K_RESIZE) {
pthread_mutex_lock(&ui__lock);
SLtt_get_screen_size();
SLsmg_reinit_smg();
@@ -335,9 +362,9 @@ int ui_browser__run(struct ui_browser *self, int delay_secs)
}
if (self->use_navkeypressed && !self->navkeypressed) {
- if (key == NEWT_KEY_DOWN || key == NEWT_KEY_UP ||
- key == NEWT_KEY_PGDN || key == NEWT_KEY_PGUP ||
- key == NEWT_KEY_HOME || key == NEWT_KEY_END ||
+ if (key == K_DOWN || key == K_UP ||
+ key == K_PGDN || key == K_PGUP ||
+ key == K_HOME || key == K_END ||
key == ' ') {
self->navkeypressed = true;
continue;
@@ -346,7 +373,7 @@ int ui_browser__run(struct ui_browser *self, int delay_secs)
}
switch (key) {
- case NEWT_KEY_DOWN:
+ case K_DOWN:
if (self->index == self->nr_entries - 1)
break;
++self->index;
@@ -355,7 +382,7 @@ int ui_browser__run(struct ui_browser *self, int delay_secs)
self->seek(self, +1, SEEK_CUR);
}
break;
- case NEWT_KEY_UP:
+ case K_UP:
if (self->index == 0)
break;
--self->index;
@@ -364,7 +391,7 @@ int ui_browser__run(struct ui_browser *self, int delay_secs)
self->seek(self, -1, SEEK_CUR);
}
break;
- case NEWT_KEY_PGDN:
+ case K_PGDN:
case ' ':
if (self->top_idx + self->height > self->nr_entries - 1)
break;
@@ -376,7 +403,7 @@ int ui_browser__run(struct ui_browser *self, int delay_secs)
self->top_idx += offset;
self->seek(self, +offset, SEEK_CUR);
break;
- case NEWT_KEY_PGUP:
+ case K_PGUP:
if (self->top_idx == 0)
break;
@@ -389,10 +416,10 @@ int ui_browser__run(struct ui_browser *self, int delay_secs)
self->top_idx -= offset;
self->seek(self, -offset, SEEK_CUR);
break;
- case NEWT_KEY_HOME:
+ case K_HOME:
ui_browser__reset_index(self);
break;
- case NEWT_KEY_END:
+ case K_END:
offset = self->height - 1;
if (offset >= self->nr_entries)
offset = self->nr_entries - 1;
diff --git a/tools/perf/util/ui/browsers/annotate.c b/tools/perf/util/ui/browsers/annotate.c
index 1a12d8f..4e0cb7f 100644
--- a/tools/perf/util/ui/browsers/annotate.c
+++ b/tools/perf/util/ui/browsers/annotate.c
@@ -6,6 +6,7 @@
#include "../../sort.h"
#include "../../symbol.h"
#include <pthread.h>
+#include <newt.h>
static void ui__error_window(const char *fmt, ...)
{
@@ -265,18 +266,14 @@ static int annotate_browser__run(struct annotate_browser *self, int evidx,
}
switch (key) {
- case -1:
- /*
- * FIXME we need to check if it was
- * es.reason == NEWT_EXIT_TIMER
- */
+ case K_TIMER:
if (timer != NULL)
timer(arg);
if (delay_secs != 0)
symbol__annotate_decay_histogram(sym, evidx);
continue;
- case NEWT_KEY_TAB:
+ case K_TAB:
if (nd != NULL) {
nd = rb_prev(nd);
if (nd == NULL)
@@ -284,7 +281,7 @@ static int annotate_browser__run(struct annotate_browser *self, int evidx,
} else
nd = self->curr_hot;
break;
- case NEWT_KEY_UNTAB:
+ case K_UNTAB:
if (nd != NULL)
nd = rb_next(nd);
if (nd == NULL)
@@ -299,8 +296,8 @@ static int annotate_browser__run(struct annotate_browser *self, int evidx,
if (annotate_browser__toggle_source(self))
ui_helpline__puts(help);
continue;
- case NEWT_KEY_ENTER:
- case NEWT_KEY_RIGHT:
+ case K_ENTER:
+ case K_RIGHT:
if (self->selection == NULL) {
ui_helpline__puts("Huh? No selection. Report to linux-kernel@vger.kernel.org");
continue;
@@ -350,8 +347,8 @@ static int annotate_browser__run(struct annotate_browser *self, int evidx,
timer, arg, delay_secs);
}
continue;
- case NEWT_KEY_LEFT:
- case NEWT_KEY_ESCAPE:
+ case K_LEFT:
+ case K_ESC:
case 'q':
case CTRL('c'):
goto out;
diff --git a/tools/perf/util/ui/browsers/hists.c b/tools/perf/util/ui/browsers/hists.c
index a06e7d9..af12e6f 100644
--- a/tools/perf/util/ui/browsers/hists.c
+++ b/tools/perf/util/ui/browsers/hists.c
@@ -344,7 +344,7 @@ static int hist_browser__run(struct hist_browser *self, const char *ev_name,
/* Expand the whole world. */
hist_browser__set_folding(self, true);
break;
- case NEWT_KEY_ENTER:
+ case K_ENTER:
if (hist_browser__toggle_fold(self))
break;
/* fall thru */
@@ -872,8 +872,8 @@ static int perf_evsel__hists_browse(struct perf_evsel *evsel, int nr_events,
}
switch (key) {
- case NEWT_KEY_TAB:
- case NEWT_KEY_UNTAB:
+ case K_TAB:
+ case K_UNTAB:
if (nr_events == 1)
continue;
/*
@@ -891,7 +891,7 @@ static int perf_evsel__hists_browse(struct perf_evsel *evsel, int nr_events,
goto zoom_dso;
case 't':
goto zoom_thread;
- case NEWT_KEY_F1:
+ case K_F1:
case 'h':
case '?':
ui__help_window("h/?/F1 Show this window\n"
@@ -909,11 +909,11 @@ static int perf_evsel__hists_browse(struct perf_evsel *evsel, int nr_events,
"d Zoom into current DSO\n"
"t Zoom into current Thread\n");
continue;
- case NEWT_KEY_ENTER:
- case NEWT_KEY_RIGHT:
+ case K_ENTER:
+ case K_RIGHT:
/* menu */
break;
- case NEWT_KEY_LEFT: {
+ case K_LEFT: {
const void *top;
if (pstack__empty(fstack)) {
@@ -931,7 +931,7 @@ static int perf_evsel__hists_browse(struct perf_evsel *evsel, int nr_events,
goto zoom_out_thread;
continue;
}
- case NEWT_KEY_ESCAPE:
+ case K_ESC:
if (!left_exits &&
!ui__dialog_yesno("Do you really want to exit?"))
continue;
@@ -1091,12 +1091,11 @@ static int perf_evsel_menu__run(struct perf_evsel_menu *menu,
key = ui_browser__run(&menu->b, delay_secs);
switch (key) {
- case -1:
- /* FIXME we need to check if it was es.reason == NEWT_EXIT_TIMER */
+ case K_TIMER:
timer(arg);
continue;
- case NEWT_KEY_RIGHT:
- case NEWT_KEY_ENTER:
+ case K_RIGHT:
+ case K_ENTER:
if (!menu->selection)
continue;
pos = menu->selection;
@@ -1114,19 +1113,19 @@ browse_hists:
arg, delay_secs);
ui_browser__show_title(&menu->b, title);
switch (key) {
- case NEWT_KEY_TAB:
+ case K_TAB:
if (pos->node.next == &evlist->entries)
pos = list_entry(evlist->entries.next, struct perf_evsel, node);
else
pos = list_entry(pos->node.next, struct perf_evsel, node);
goto browse_hists;
- case NEWT_KEY_UNTAB:
+ case K_UNTAB:
if (pos->node.prev == &evlist->entries)
pos = list_entry(evlist->entries.prev, struct perf_evsel, node);
else
pos = list_entry(pos->node.prev, struct perf_evsel, node);
goto browse_hists;
- case NEWT_KEY_ESCAPE:
+ case K_ESC:
if (!ui__dialog_yesno("Do you really want to exit?"))
continue;
/* Fall thru */
@@ -1136,9 +1135,9 @@ browse_hists:
default:
continue;
}
- case NEWT_KEY_LEFT:
+ case K_LEFT:
continue;
- case NEWT_KEY_ESCAPE:
+ case K_ESC:
if (!ui__dialog_yesno("Do you really want to exit?"))
continue;
/* Fall thru */
diff --git a/tools/perf/util/ui/keysyms.h b/tools/perf/util/ui/keysyms.h
new file mode 100644
index 0000000..3458b19
--- /dev/null
+++ b/tools/perf/util/ui/keysyms.h
@@ -0,0 +1,25 @@
+#ifndef _PERF_KEYSYMS_H_
+#define _PERF_KEYSYMS_H_ 1
+
+#include "libslang.h"
+
+#define K_DOWN SL_KEY_DOWN
+#define K_END SL_KEY_END
+#define K_ENTER '\r'
+#define K_ESC 033
+#define K_F1 SL_KEY_F(1)
+#define K_HOME SL_KEY_HOME
+#define K_LEFT SL_KEY_LEFT
+#define K_PGDN SL_KEY_NPAGE
+#define K_PGUP SL_KEY_PPAGE
+#define K_RIGHT SL_KEY_RIGHT
+#define K_TAB '\t'
+#define K_UNTAB SL_KEY_UNTAB
+#define K_UP SL_KEY_UP
+
+/* Not really keys */
+#define K_TIMER -1
+#define K_ERROR -2
+#define K_RESIZE -3
+
+#endif /* _PERF_KEYSYMS_H_ */
diff --git a/tools/perf/util/ui/libslang.h b/tools/perf/util/ui/libslang.h
index 2b63e1c..4d54b64 100644
--- a/tools/perf/util/ui/libslang.h
+++ b/tools/perf/util/ui/libslang.h
@@ -24,4 +24,6 @@
#define sltt_set_color SLtt_set_color
#endif
+#define SL_KEY_UNTAB 0x1000
+
#endif /* _PERF_UI_SLANG_H_ */
diff --git a/tools/perf/util/ui/setup.c b/tools/perf/util/ui/setup.c
index 5111f1a..1e6ba06 100644
--- a/tools/perf/util/ui/setup.c
+++ b/tools/perf/util/ui/setup.c
@@ -18,6 +18,18 @@ static void newt_suspend(void *d __used)
newtResume();
}
+static int ui__init(void)
+{
+ int err = SLkp_init();
+
+ if (err < 0)
+ goto out;
+
+ SLkp_define_keysym((char *)"^(kB)", SL_KEY_UNTAB);
+out:
+ return err;
+}
+
static void ui__exit(void)
{
SLtt_set_cursor_visibility(1);
@@ -44,6 +56,7 @@ void setup_browser(bool fallback_to_pager)
use_browser = 1;
newtInit();
+ ui__init();
newtSetSuspendCallback(newt_suspend, NULL);
ui_helpline__init();
ui_browser__init();
--
1.6.2.5
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 3/4] perf hists browser: Refuse 'a' hotkey on non symbolic views
2011-10-23 19:12 [GIT PULL 0/4] perf/core fixes and improvements Arnaldo Carvalho de Melo
2011-10-23 19:12 ` [PATCH 1/4] perf tools: Fix tracing info recording Arnaldo Carvalho de Melo
2011-10-23 19:12 ` [PATCH 2/4] perf ui browser: Use libslang to read keys Arnaldo Carvalho de Melo
@ 2011-10-23 19:12 ` Arnaldo Carvalho de Melo
2011-10-23 19:12 ` [PATCH 4/4] perf symbols: Increase symbol KSYM_NAME_LEN size Arnaldo Carvalho de Melo
2011-10-25 3:22 ` [GIT PULL 0/4] perf/core fixes and improvements Ingo Molnar
4 siblings, 0 replies; 13+ messages in thread
From: Arnaldo Carvalho de Melo @ 2011-10-23 19:12 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Arnaldo Carvalho de Melo, David Ahern,
Frederic Weisbecker, Mike Galbraith, Paul Mackerras,
Peter Zijlstra, Stephane Eranian
From: Arnaldo Carvalho de Melo <acme@redhat.com>
We don't allocate the histogram data structures for --sort lists without
"sym", so, just like was done for the menu, don't try to annotate when
'a' is pressed, just warn the user about it.
Reported-by: David Ahern <dsahern@gmail.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/n/tip-27mjg02s2mbw8lfxqv7jpzec@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/util/ui/browsers/hists.c | 7 +++++++
1 files changed, 7 insertions(+), 0 deletions(-)
diff --git a/tools/perf/util/ui/browsers/hists.c b/tools/perf/util/ui/browsers/hists.c
index af12e6f..4663dcb 100644
--- a/tools/perf/util/ui/browsers/hists.c
+++ b/tools/perf/util/ui/browsers/hists.c
@@ -882,6 +882,13 @@ static int perf_evsel__hists_browse(struct perf_evsel *evsel, int nr_events,
*/
goto out_free_stack;
case 'a':
+ if (!browser->has_symbols) {
+ ui__warning(
+ "Annotation is only available for symbolic views, "
+ "include \"sym\" in --sort to use it.");
+ continue;
+ }
+
if (browser->selection == NULL ||
browser->selection->sym == NULL ||
browser->selection->map->dso->annotate_warned)
--
1.6.2.5
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 4/4] perf symbols: Increase symbol KSYM_NAME_LEN size
2011-10-23 19:12 [GIT PULL 0/4] perf/core fixes and improvements Arnaldo Carvalho de Melo
` (2 preceding siblings ...)
2011-10-23 19:12 ` [PATCH 3/4] perf hists browser: Refuse 'a' hotkey on non symbolic views Arnaldo Carvalho de Melo
@ 2011-10-23 19:12 ` Arnaldo Carvalho de Melo
2011-10-24 18:05 ` Valdis.Kletnieks
2011-10-25 3:22 ` [GIT PULL 0/4] perf/core fixes and improvements Ingo Molnar
4 siblings, 1 reply; 13+ messages in thread
From: Arnaldo Carvalho de Melo @ 2011-10-23 19:12 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Ricardo Ribalda Delgado, Anton Blanchard,
David Ahern, Ingo Molnar, Paul Mackerras, Pekka Enberg,
Peter Zijlstra, Arnaldo Carvalho de Melo
From: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
Fglrx propietary driver has symbol names over 128 chars (:S). This
breaks the function kallsyms__parse.
This fix increases the size of KSYM_NAME_LEN, so kallsyms__parse can
work on such kernels.
The only counterparty, is that such function requires 128 more bytes to
work.
Acked-by: Pekka Enberg <penberg@kernel.org>
Cc: Anton Blanchard <anton@samba.org>
Cc: David Ahern <daahern@cisco.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Pekka Enberg <penberg@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1319096606-11568-1-git-send-email-ricardo.ribalda@gmail.com
Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/util/symbol.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c
index 3f09a23..632b50c 100644
--- a/tools/perf/util/symbol.c
+++ b/tools/perf/util/symbol.c
@@ -24,7 +24,7 @@
#include <sys/utsname.h>
#ifndef KSYM_NAME_LEN
-#define KSYM_NAME_LEN 128
+#define KSYM_NAME_LEN 256
#endif
#ifndef NT_GNU_BUILD_ID
--
1.6.2.5
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH 4/4] perf symbols: Increase symbol KSYM_NAME_LEN size
2011-10-23 19:12 ` [PATCH 4/4] perf symbols: Increase symbol KSYM_NAME_LEN size Arnaldo Carvalho de Melo
@ 2011-10-24 18:05 ` Valdis.Kletnieks
2011-10-24 18:54 ` Ricardo Ribalda Delgado
0 siblings, 1 reply; 13+ messages in thread
From: Valdis.Kletnieks @ 2011-10-24 18:05 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: Ingo Molnar, linux-kernel, Ricardo Ribalda Delgado,
Anton Blanchard, David Ahern, Paul Mackerras, Pekka Enberg,
Peter Zijlstra, Arnaldo Carvalho de Melo
[-- Attachment #1: Type: text/plain, Size: 433 bytes --]
On Sun, 23 Oct 2011 17:12:23 -0200, Arnaldo Carvalho de Melo said:
> Fglrx propietary driver has symbol names over 128 chars (:S). This
> breaks the function kallsyms__parse.
Well, that explains why they haven't upstreamed the driver, it will never
pass checkpatch's line-lenght check :)
But at some point you really need to just tell the vendors to put down
the crack pipe.
(What *are* the symbols? C++ mangled function names?)
[-- Attachment #2: Type: application/pgp-signature, Size: 227 bytes --]
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 4/4] perf symbols: Increase symbol KSYM_NAME_LEN size
2011-10-24 18:05 ` Valdis.Kletnieks
@ 2011-10-24 18:54 ` Ricardo Ribalda Delgado
0 siblings, 0 replies; 13+ messages in thread
From: Ricardo Ribalda Delgado @ 2011-10-24 18:54 UTC (permalink / raw)
To: Valdis.Kletnieks
Cc: Arnaldo Carvalho de Melo, Ingo Molnar, linux-kernel,
Anton Blanchard, David Ahern, Paul Mackerras, Pekka Enberg,
Peter Zijlstra, Arnaldo Carvalho de Melo
Also suck a big binary blob does not help :)
ricardo@newpili:/tmp/fglrx-driver-11-9/arch/x86_64/lib/modules/fglrx/build_mod$
for a in $( objdump -t libfglrx_ip.a | grep text| awk '{print $6}' );
do printf " %s $a\n" $(echo $a| wc -c) ; done | sort -n | tee
symbols | tail -n 10
137 _ZNK11R800AddrLib28ComputeSurfaceInfoMicroTiledEPK32_ADDR_COMPUTE_SURFACE_INFO_INPUTP33_ADDR_COMPUTE_SURFACE_INFO_OUTPUTj13_AddrTileMode
140 _ZNK11R800AddrLib33DispatchComputeFmaskCoordFromAddrEPK39_ADDR_COMPUTE_FMASK_COORDFROMADDR_INPUTP40_ADDR_COMPUTE_FMASK_COORDFROMADDR_OUTPUT
141 _ZNK11R600AddrLib30HwlComputeSurfaceAddrFromCoordEPK41_ADDR_COMPUTE_SURFACE_ADDRFROMCOORD_INPUTP42_ADDR_COMPUTE_SURFACE_ADDRFROMCOORD_OUTPUT
141 _ZNK11R600AddrLib30HwlComputeSurfaceCoordFromAddrEPK41_ADDR_COMPUTE_SURFACE_COORDFROMADDR_INPUTP42_ADDR_COMPUTE_SURFACE_COORDFROMADDR_OUTPUT
141 _ZNK11R800AddrLib30HwlComputeSurfaceAddrFromCoordEPK41_ADDR_COMPUTE_SURFACE_ADDRFROMCOORD_INPUTP42_ADDR_COMPUTE_SURFACE_ADDRFROMCOORD_OUTPUT
141 _ZNK11R800AddrLib30HwlComputeSurfaceCoordFromAddrEPK41_ADDR_COMPUTE_SURFACE_COORDFROMADDR_INPUTP42_ADDR_COMPUTE_SURFACE_COORDFROMADDR_OUTPUT
146 _ZNK11R600AddrLib35DispatchComputeSurfaceAddrFromCoordEPK41_ADDR_COMPUTE_SURFACE_ADDRFROMCOORD_INPUTP42_ADDR_COMPUTE_SURFACE_ADDRFROMCOORD_OUTPUT
146 _ZNK11R600AddrLib35DispatchComputeSurfaceCoordFromAddrEPK41_ADDR_COMPUTE_SURFACE_COORDFROMADDR_INPUTP42_ADDR_COMPUTE_SURFACE_COORDFROMADDR_OUTPUT
146 _ZNK11R800AddrLib35DispatchComputeSurfaceAddrFromCoordEPK41_ADDR_COMPUTE_SURFACE_ADDRFROMCOORD_INPUTP42_ADDR_COMPUTE_SURFACE_ADDRFROMCOORD_OUTPUT
146 _ZNK11R800AddrLib35DispatchComputeSurfaceCoordFromAddrEPK41_ADDR_COMPUTE_SURFACE_COORDFROMADDR_INPUTP42_ADDR_COMPUTE_SURFACE_COORDFROMADDR_OUTPUT
On Mon, Oct 24, 2011 at 20:05, <Valdis.Kletnieks@vt.edu> wrote:
> On Sun, 23 Oct 2011 17:12:23 -0200, Arnaldo Carvalho de Melo said:
>
>> Fglrx propietary driver has symbol names over 128 chars (:S). This
>> breaks the function kallsyms__parse.
>
> Well, that explains why they haven't upstreamed the driver, it will never
> pass checkpatch's line-lenght check :)
>
> But at some point you really need to just tell the vendors to put down
> the crack pipe.
>
> (What *are* the symbols? C++ mangled function names?)
>
--
Ricardo Ribalda
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [GIT PULL 0/4] perf/core fixes and improvements
2011-10-23 19:12 [GIT PULL 0/4] perf/core fixes and improvements Arnaldo Carvalho de Melo
` (3 preceding siblings ...)
2011-10-23 19:12 ` [PATCH 4/4] perf symbols: Increase symbol KSYM_NAME_LEN size Arnaldo Carvalho de Melo
@ 2011-10-25 3:22 ` Ingo Molnar
4 siblings, 0 replies; 13+ messages in thread
From: Ingo Molnar @ 2011-10-25 3:22 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: linux-kernel, Anton Blanchard, David Ahern, Eric Dumazet,
Frederic Weisbecker, Jiri Olsa, Mike Galbraith, Neil Horman,
Paul Mackerras, Pekka Enberg, Peter Zijlstra,
Ricardo Ribalda Delgado, Stephane Eranian, Steven Rostedt,
arnaldo.melo
* Arnaldo Carvalho de Melo <acme@infradead.org> wrote:
> Hi Ingo,
>
> Please consider pulling from:
>
> git://github.com/acmel/linux.git perf/core
>
> Regards,
>
> - Arnaldo
>
> Arnaldo Carvalho de Melo (2):
> perf ui browser: Use libslang to read keys
> perf hists browser: Refuse 'a' hotkey on non symbolic views
>
> Jiri Olsa (1):
> perf tools: Fix tracing info recording
>
> Ricardo Ribalda Delgado (1):
> perf symbols: Increase symbol KSYM_NAME_LEN size
>
> tools/perf/Makefile | 1 +
> tools/perf/builtin-annotate.c | 8 +-
> tools/perf/util/header.c | 27 +++++++-
> tools/perf/util/hist.h | 9 +--
> tools/perf/util/symbol.c | 2 +-
> tools/perf/util/trace-event-info.c | 112 +++++++++++++++++++++++++-------
> tools/perf/util/trace-event.h | 13 ++++-
> tools/perf/util/ui/browser.c | 79 +++++++++++++++-------
> tools/perf/util/ui/browsers/annotate.c | 19 ++---
> tools/perf/util/ui/browsers/hists.c | 40 +++++++-----
> tools/perf/util/ui/keysyms.h | 25 +++++++
> tools/perf/util/ui/libslang.h | 2 +
> tools/perf/util/ui/setup.c | 13 ++++
> 13 files changed, 256 insertions(+), 94 deletions(-)
> create mode 100644 tools/perf/util/ui/keysyms.h
Pulled, thanks a lot Arnaldo!
Ingo
^ permalink raw reply [flat|nested] 13+ messages in thread
* [GIT PULL 0/4] perf/core fixes and improvements
@ 2019-01-10 16:56 Arnaldo Carvalho de Melo
2019-01-11 7:12 ` Ingo Molnar
0 siblings, 1 reply; 13+ messages in thread
From: Arnaldo Carvalho de Melo @ 2019-01-10 16:56 UTC (permalink / raw)
To: Ingo Molnar
Cc: Clark Williams, linux-kernel, linux-perf-users,
Arnaldo Carvalho de Melo, Ravi Bangoria, Arnaldo Carvalho de Melo
Hi Ingo,
Please consider pulling, now there are no more ABI header
warnings,
- Arnaldo
Test results at the end of this message, as usual.
The following changes since commit 576b50ea235699d83758c0c514c65b8d486a159d:
Merge tag 'perf-core-for-mingo-5.0-20190108' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/urgent (2019-01-09 07:59:40 +0100)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-5.0-20190110
for you to fetch changes up to 15c03092a9fbcdd041f58e5f832bf76c21c42e6a:
tools headers powerpc: Remove unistd.h (2019-01-10 10:42:08 -0300)
----------------------------------------------------------------
perf/core fixes and improvements:
perf trace:
Ravi Bangoria:
- Rework PowerPC syscall table generation, now using a .tbl file just like
x86_64 and S/390, also silencing a tools build warning about headers out of
sync with the kernel sources.
tools include uapi:
Arnaldo Carvalho de Melo:
- Sync linux/if_link.h copy with the kernel sources, silencing a build warning.
perf top:
Arnaldo Carvalho de Melo:
- Add 'arch_cpu_idle' to the list of kernel idle symbols, noticed on a Orange
Pi Zero ARM board, just like with other symbols in other arches.
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
----------------------------------------------------------------
Arnaldo Carvalho de Melo (2):
tools include uapi: Sync linux/if_link.h copy with the kernel sources
perf symbols: Add 'arch_cpu_idle' to the list of kernel idle symbols
Ravi Bangoria (2):
perf powerpc: Rework syscall table generation
tools headers powerpc: Remove unistd.h
tools/arch/powerpc/include/uapi/asm/unistd.h | 404 -------------------
tools/include/uapi/linux/if_link.h | 19 +
tools/perf/arch/powerpc/Makefile | 15 +-
.../perf/arch/powerpc/entry/syscalls/mksyscalltbl | 22 +-
tools/perf/arch/powerpc/entry/syscalls/syscall.tbl | 427 +++++++++++++++++++++
tools/perf/check-headers.sh | 1 -
tools/perf/util/symbol.c | 1 +
7 files changed, 470 insertions(+), 419 deletions(-)
delete mode 100644 tools/arch/powerpc/include/uapi/asm/unistd.h
create mode 100644 tools/perf/arch/powerpc/entry/syscalls/syscall.tbl
Test results:
The first ones are container based builds of tools/perf with and without libelf
support. Where clang is available, it is also used to build perf with/without
libelf, and building with LIBCLANGLLVM=1 (built-in clang) with gcc and clang
when clang and its devel libraries are installed.
The objtool and samples/bpf/ builds are disabled now that I'm switching from
using the sources in a local volume to fetching them from a http server to
build it inside the container, to make it easier to build in a container cluster.
Those will come back later.
Several are cross builds, the ones with -x-ARCH and the android one, and those
may not have all the features built, due to lack of multi-arch devel packages,
available and being used so far on just a few, like
debian:experimental-x-{arm64,mipsel}.
The 'perf test' one will perform a variety of tests exercising
tools/perf/util/, tools/lib/{bpf,traceevent,etc}, as well as run perf commands
with a variety of command line event specifications to then intercept the
sys_perf_event syscall to check that the perf_event_attr fields are set up as
expected, among a variety of other unit tests.
Then there is the 'make -C tools/perf build-test' ones, that build tools/perf/
with a variety of feature sets, exercising the build with an incomplete set of
features as well as with a complete one. It is planned to have it run on each
of the containers mentioned above, using some container orchestration
infrastructure. Get in contact if interested in helping having this in place.
$ export PERF_TARBALL=http://192.168.124.1/perf/perf-5.0.0-rc1.tar.xz
$ dm
1 alpine:3.4 : Ok gcc (Alpine 5.3.0) 5.3.0
2 alpine:3.5 : Ok gcc (Alpine 6.2.1) 6.2.1 20160822
3 alpine:3.6 : Ok gcc (Alpine 6.3.0) 6.3.0
4 alpine:3.7 : Ok gcc (Alpine 6.4.0) 6.4.0
5 alpine:3.8 : Ok gcc (Alpine 6.4.0) 6.4.0
6 alpine:edge : Ok gcc (Alpine 8.2.0) 8.2.0
7 amazonlinux:1 : Ok gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28)
8 amazonlinux:2 : Ok gcc (GCC) 7.3.1 20180303 (Red Hat 7.3.1-5)
9 android-ndk:r12b-arm : Ok arm-linux-androideabi-gcc (GCC) 4.9.x 20150123 (prerelease)
10 android-ndk:r15c-arm : Ok arm-linux-androideabi-gcc (GCC) 4.9.x 20150123 (prerelease)
11 centos:5 : Ok gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-55)
12 centos:6 : Ok gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-23)
13 centos:7 : Ok gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36)
14 clearlinux:latest : Ok gcc (Clear Linux OS for Intel Architecture) 8.2.1 20180502
15 debian:7 : Ok gcc (Debian 4.7.2-5) 4.7.2
16 debian:8 : Ok gcc (Debian 4.9.2-10+deb8u2) 4.9.2
17 debian:9 : Ok gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516
18 debian:experimental : Ok gcc (Debian 8.2.0-13) 8.2.0
19 debian:experimental-x-arm64 : Ok aarch64-linux-gnu-gcc (Debian 8.2.0-11) 8.2.0
20 debian:experimental-x-mips : Ok mips-linux-gnu-gcc (Debian 8.2.0-11) 8.2.0
21 debian:experimental-x-mips64 : Ok mips64-linux-gnuabi64-gcc (Debian 8.2.0-11) 8.2.0
22 debian:experimental-x-mipsel : Ok mipsel-linux-gnu-gcc (Debian 8.2.0-11) 8.2.0
23 fedora:20 : Ok gcc (GCC) 4.8.3 20140911 (Red Hat 4.8.3-7)
24 fedora:22 : Ok gcc (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6)
25 fedora:23 : Ok gcc (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6)
26 fedora:24 : Ok gcc (GCC) 6.3.1 20161221 (Red Hat 6.3.1-1)
27 fedora:24-x-ARC-uClibc : Ok arc-linux-gcc (ARCompact ISA Linux uClibc toolchain 2017.09-rc2) 7.1.1 20170710
28 fedora:25 : Ok gcc (GCC) 6.4.1 20170727 (Red Hat 6.4.1-1)
29 fedora:26 : Ok gcc (GCC) 7.3.1 20180130 (Red Hat 7.3.1-2)
30 fedora:27 : Ok gcc (GCC) 7.3.1 20180712 (Red Hat 7.3.1-6)
31 fedora:28 : Ok gcc (GCC) 8.2.1 20181105 (Red Hat 8.2.1-5)
32 fedora:29 : Ok gcc (GCC) 8.2.1 20181105 (Red Hat 8.2.1-5)
33 fedora:rawhide : Ok gcc (GCC) 8.2.1 20181105 (Red Hat 8.2.1-5)
34 gentoo-stage3-amd64:latest : Ok gcc (Gentoo 7.3.0-r3 p1.4) 7.3.0
35 mageia:5 : Ok gcc (GCC) 4.9.2
36 mageia:6 : Ok gcc (Mageia 5.5.0-1.mga6) 5.5.0
37 opensuse:13.2 : Ok gcc (SUSE Linux) 4.8.3 20140627 [gcc-4_8-branch revision 212064]
38 opensuse:15.0 : Ok gcc (SUSE Linux) 7.3.1 20180323 [gcc-7-branch revision 258812]
39 opensuse:42.1 : Ok gcc (SUSE Linux) 4.8.5
40 opensuse:42.2 : Ok gcc (SUSE Linux) 4.8.5
41 opensuse:42.3 : Ok gcc (SUSE Linux) 4.8.5
42 opensuse:tumbleweed : Ok gcc (SUSE Linux) 8.2.1 20181108 [gcc-8-branch revision 265914]
43 oraclelinux:6 : Ok gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-23.0.1)
44 oraclelinux:7 : Ok gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36.0.1)
45 ubuntu:12.04.5 : Ok gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
46 ubuntu:14.04.4 : Ok gcc (Ubuntu 4.8.4-2ubuntu1~14.04.4) 4.8.4
47 ubuntu:14.04.4-x-linaro-arm64 : Ok aarch64-linux-gnu-gcc (Linaro GCC 5.5-2017.10) 5.5.0
48 ubuntu:16.04 : Ok gcc (Ubuntu 5.4.0-6ubuntu1~16.04.10) 5.4.0 20160609
49 ubuntu:16.04-x-arm : Ok arm-linux-gnueabihf-gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
50 ubuntu:16.04-x-arm64 : Ok aarch64-linux-gnu-gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
51 ubuntu:16.04-x-powerpc : Ok powerpc-linux-gnu-gcc (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
52 ubuntu:16.04-x-powerpc64 : Ok powerpc64-linux-gnu-gcc (Ubuntu/IBM 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
53 ubuntu:16.04-x-powerpc64el : Ok powerpc64le-linux-gnu-gcc (Ubuntu/IBM 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
54 ubuntu:16.04-x-s390 : Ok s390x-linux-gnu-gcc (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
55 ubuntu:17.10 : Ok gcc (Ubuntu 7.2.0-8ubuntu3.2) 7.2.0
56 ubuntu:18.04 : Ok gcc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0
57 ubuntu:18.04-x-arm : Ok arm-linux-gnueabihf-gcc (Ubuntu/Linaro 7.3.0-27ubuntu1~18.04) 7.3.0
58 ubuntu:18.04-x-arm64 : Ok aarch64-linux-gnu-gcc (Ubuntu/Linaro 7.3.0-27ubuntu1~18.04) 7.3.0
59 ubuntu:18.04-x-m68k : Ok m68k-linux-gnu-gcc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0
60 ubuntu:18.04-x-powerpc : Ok powerpc-linux-gnu-gcc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0
61 ubuntu:18.04-x-powerpc64 : Ok powerpc64-linux-gnu-gcc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0
62 ubuntu:18.04-x-powerpc64el : Ok powerpc64le-linux-gnu-gcc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0
63 ubuntu:18.04-x-riscv64 : Ok riscv64-linux-gnu-gcc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0
64 ubuntu:18.04-x-s390 : Ok s390x-linux-gnu-gcc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0
65 ubuntu:18.04-x-sh4 : Ok sh4-linux-gnu-gcc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0
66 ubuntu:18.04-x-sparc64 : Ok sparc64-linux-gnu-gcc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0
67 ubuntu:18.10 : Ok gcc (Ubuntu 8.2.0-7ubuntu1) 8.2.0
68 ubuntu:19.04 : Ok gcc (Ubuntu 8.2.0-12ubuntu1) 8.2.0
69 ubuntu:19.04-x-alpha : Ok alpha-linux-gnu-gcc (Ubuntu 8.2.0-11ubuntu1) 8.2.0
70 ubuntu:19.04-x-hppa : Ok hppa-linux-gnu-gcc (Ubuntu 8.2.0-11ubuntu1) 8.2.0
$
# uname -a
Linux quaco 4.19.13-300.fc29.x86_64 #1 SMP Sat Dec 29 22:54:28 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
# git log --oneline -1
15c03092a9fb tools headers powerpc: Remove unistd.h
# perf version --build-options
perf version 5.0.rc1.g15c030
dwarf: [ on ] # HAVE_DWARF_SUPPORT
dwarf_getlocations: [ on ] # HAVE_DWARF_GETLOCATIONS_SUPPORT
glibc: [ on ] # HAVE_GLIBC_SUPPORT
gtk2: [ on ] # HAVE_GTK2_SUPPORT
syscall_table: [ on ] # HAVE_SYSCALL_TABLE_SUPPORT
libbfd: [ on ] # HAVE_LIBBFD_SUPPORT
libelf: [ on ] # HAVE_LIBELF_SUPPORT
libnuma: [ on ] # HAVE_LIBNUMA_SUPPORT
numa_num_possible_cpus: [ on ] # HAVE_LIBNUMA_SUPPORT
libperl: [ on ] # HAVE_LIBPERL_SUPPORT
libpython: [ on ] # HAVE_LIBPYTHON_SUPPORT
libslang: [ on ] # HAVE_SLANG_SUPPORT
libcrypto: [ on ] # HAVE_LIBCRYPTO_SUPPORT
libunwind: [ on ] # HAVE_LIBUNWIND_SUPPORT
libdw-dwarf-unwind: [ on ] # HAVE_DWARF_SUPPORT
zlib: [ on ] # HAVE_ZLIB_SUPPORT
lzma: [ on ] # HAVE_LZMA_SUPPORT
get_cpuid: [ on ] # HAVE_AUXTRACE_SUPPORT
bpf: [ on ] # HAVE_LIBBPF_SUPPORT
# perf test
1: vmlinux symtab matches kallsyms : Ok
2: Detect openat syscall event : Ok
3: Detect openat syscall event on all cpus : Ok
4: Read samples using the mmap interface : Ok
5: Test data source output : Ok
6: Parse event definition strings : Ok
7: Simple expression parser : Ok
8: PERF_RECORD_* events & perf_sample fields : Ok
9: Parse perf pmu format : Ok
10: DSO data read : Ok
11: DSO data cache : Ok
12: DSO data reopen : Ok
13: Roundtrip evsel->name : Ok
14: Parse sched tracepoints fields : Ok
15: syscalls:sys_enter_openat event fields : Ok
16: Setup struct perf_event_attr : Ok
17: Match and link multiple hists : Ok
18: 'import perf' in python : Ok
19: Breakpoint overflow signal handler : Ok
20: Breakpoint overflow sampling : Ok
21: Breakpoint accounting : Ok
22: Watchpoint :
22.1: Read Only Watchpoint : Skip
22.2: Write Only Watchpoint : Ok
22.3: Read / Write Watchpoint : Ok
22.4: Modify Watchpoint : Ok
23: Number of exit events of a simple workload : Ok
24: Software clock events period values : Ok
25: Object code reading : Ok
26: Sample parsing : Ok
27: Use a dummy software event to keep tracking : Ok
28: Parse with no sample_id_all bit set : Ok
29: Filter hist entries : Ok
30: Lookup mmap thread : Ok
31: Share thread mg : Ok
32: Sort output of hist entries : Ok
33: Cumulate child hist entries : Ok
34: Track with sched_switch : Ok
35: Filter fds with revents mask in a fdarray : Ok
36: Add fd to a fdarray, making it autogrow : Ok
37: kmod_path__parse : Ok
38: Thread map : Ok
39: LLVM search and compile :
39.1: Basic BPF llvm compile : Ok
39.2: kbuild searching : Ok
39.3: Compile source for BPF prologue generation : Ok
39.4: Compile source for BPF relocation : Ok
40: Session topology : Ok
41: BPF filter :
41.1: Basic BPF filtering : Ok
41.2: BPF pinning : Ok
41.3: BPF prologue generation : Ok
41.4: BPF relocation checker : Ok
42: Synthesize thread map : Ok
43: Remove thread map : Ok
44: Synthesize cpu map : Ok
45: Synthesize stat config : Ok
46: Synthesize stat : Ok
47: Synthesize stat round : Ok
48: Synthesize attr update : Ok
49: Event times : Ok
50: Read backward ring buffer : Ok
51: Print cpu map : Ok
52: Probe SDT events : Ok
53: is_printable_array : Ok
54: Print bitmap : Ok
55: perf hooks : Ok
56: builtin clang support : Skip (not compiled in)
57: unit_number__scnprintf : Ok
58: mem2node : Ok
59: x86 rdpmc : Ok
60: Convert perf time to TSC : Ok
61: DWARF unwind : Ok
62: x86 instruction decoder - new instructions : Ok
63: x86 bp modify : Ok
64: probe libc's inet_pton & backtrace it with ping : Ok
65: Use vfs_getname probe to get syscall args filenames : Ok
66: Add vfs_getname probe to get syscall args filenames : Ok
67: Check open filename arg using perf trace + vfs_getname: Ok
$ make -C tools/perf build-test
make: Entering directory '/home/acme/git/perf/tools/perf'
- tarpkg: ./tests/perf-targz-src-pkg .
make_with_clangllvm_O: make LIBCLANGLLVM=1
make_perf_o_O: make perf.o
make_no_slang_O: make NO_SLANG=1
make_tags_O: make tags
make_no_backtrace_O: make NO_BACKTRACE=1
make_no_libbpf_O: make NO_LIBBPF=1
make_minimal_O: make NO_LIBPERL=1 NO_LIBPYTHON=1 NO_NEWT=1 NO_GTK2=1 NO_DEMANGLE=1 NO_LIBELF=1 NO_LIBUNWIND=1 NO_BACKTRACE=1 NO_LIBNUMA=1 NO_LIBAUDIT=1 NO_LIBBIONIC=1 NO_LIBDW_DWARF_UNWIND=1 NO_AUXTRACE=1 NO_LIBBPF=1 NO_LIBCRYPTO=1 NO_SDT=1 NO_JVMTI=1
make_no_auxtrace_O: make NO_AUXTRACE=1
make_no_libnuma_O: make NO_LIBNUMA=1
make_install_bin_O: make install-bin
make_no_ui_O: make NO_NEWT=1 NO_SLANG=1 NO_GTK2=1
make_debug_O: make DEBUG=1
make_install_prefix_slash_O: make install prefix=/tmp/krava/
make_no_libaudit_O: make NO_LIBAUDIT=1
make_help_O: make help
make_no_libelf_O: make NO_LIBELF=1
make_no_gtk2_O: make NO_GTK2=1
make_no_libbionic_O: make NO_LIBBIONIC=1
make_install_O: make install
make_util_map_o_O: make util/map.o
make_install_prefix_O: make install prefix=/tmp/krava
make_static_O: make LDFLAGS=-static
make_no_scripts_O: make NO_LIBPYTHON=1 NO_LIBPERL=1
make_no_libunwind_O: make NO_LIBUNWIND=1
make_no_libdw_dwarf_unwind_O: make NO_LIBDW_DWARF_UNWIND=1
make_no_newt_O: make NO_NEWT=1
make_no_libperl_O: make NO_LIBPERL=1
make_util_pmu_bison_o_O: make util/pmu-bison.o
make_no_libpython_O: make NO_LIBPYTHON=1
make_clean_all_O: make clean all
make_pure_O: make
make_no_demangle_O: make NO_DEMANGLE=1
make_doc_O: make doc
make_with_babeltrace_O: make LIBBABELTRACE=1
OK
make: Leaving directory '/home/acme/git/perf/tools/perf'
$
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [GIT PULL 0/4] perf/core fixes and improvements
2019-01-10 16:56 Arnaldo Carvalho de Melo
@ 2019-01-11 7:12 ` Ingo Molnar
0 siblings, 0 replies; 13+ messages in thread
From: Ingo Molnar @ 2019-01-11 7:12 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: Clark Williams, linux-kernel, linux-perf-users, Ravi Bangoria,
Arnaldo Carvalho de Melo
* Arnaldo Carvalho de Melo <acme@kernel.org> wrote:
> Hi Ingo,
>
> Please consider pulling, now there are no more ABI header
> warnings,
>
> - Arnaldo
>
> Test results at the end of this message, as usual.
>
> The following changes since commit 576b50ea235699d83758c0c514c65b8d486a159d:
>
> Merge tag 'perf-core-for-mingo-5.0-20190108' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/urgent (2019-01-09 07:59:40 +0100)
>
> are available in the Git repository at:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-5.0-20190110
>
> for you to fetch changes up to 15c03092a9fbcdd041f58e5f832bf76c21c42e6a:
>
> tools headers powerpc: Remove unistd.h (2019-01-10 10:42:08 -0300)
>
> ----------------------------------------------------------------
> perf/core fixes and improvements:
>
> perf trace:
>
> Ravi Bangoria:
>
> - Rework PowerPC syscall table generation, now using a .tbl file just like
> x86_64 and S/390, also silencing a tools build warning about headers out of
> sync with the kernel sources.
>
> tools include uapi:
>
> Arnaldo Carvalho de Melo:
>
> - Sync linux/if_link.h copy with the kernel sources, silencing a build warning.
>
> perf top:
>
> Arnaldo Carvalho de Melo:
>
> - Add 'arch_cpu_idle' to the list of kernel idle symbols, noticed on a Orange
> Pi Zero ARM board, just like with other symbols in other arches.
>
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
>
> ----------------------------------------------------------------
> Arnaldo Carvalho de Melo (2):
> tools include uapi: Sync linux/if_link.h copy with the kernel sources
> perf symbols: Add 'arch_cpu_idle' to the list of kernel idle symbols
>
> Ravi Bangoria (2):
> perf powerpc: Rework syscall table generation
> tools headers powerpc: Remove unistd.h
>
> tools/arch/powerpc/include/uapi/asm/unistd.h | 404 -------------------
> tools/include/uapi/linux/if_link.h | 19 +
> tools/perf/arch/powerpc/Makefile | 15 +-
> .../perf/arch/powerpc/entry/syscalls/mksyscalltbl | 22 +-
> tools/perf/arch/powerpc/entry/syscalls/syscall.tbl | 427 +++++++++++++++++++++
> tools/perf/check-headers.sh | 1 -
> tools/perf/util/symbol.c | 1 +
> 7 files changed, 470 insertions(+), 419 deletions(-)
> delete mode 100644 tools/arch/powerpc/include/uapi/asm/unistd.h
> create mode 100644 tools/perf/arch/powerpc/entry/syscalls/syscall.tbl
Pulled, thanks a lot Arnaldo!
Ingo
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2019-01-11 7:12 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-10-23 19:12 [GIT PULL 0/4] perf/core fixes and improvements Arnaldo Carvalho de Melo
2011-10-23 19:12 ` [PATCH 1/4] perf tools: Fix tracing info recording Arnaldo Carvalho de Melo
2011-10-23 19:12 ` [PATCH 2/4] perf ui browser: Use libslang to read keys Arnaldo Carvalho de Melo
2011-10-23 19:12 ` [PATCH 3/4] perf hists browser: Refuse 'a' hotkey on non symbolic views Arnaldo Carvalho de Melo
2011-10-23 19:12 ` [PATCH 4/4] perf symbols: Increase symbol KSYM_NAME_LEN size Arnaldo Carvalho de Melo
2011-10-24 18:05 ` Valdis.Kletnieks
2011-10-24 18:54 ` Ricardo Ribalda Delgado
2011-10-25 3:22 ` [GIT PULL 0/4] perf/core fixes and improvements Ingo Molnar
-- strict thread matches above, loose matches on Subject: below --
2019-01-10 16:56 Arnaldo Carvalho de Melo
2019-01-11 7:12 ` Ingo Molnar
2011-03-10 19:29 Arnaldo Carvalho de Melo
2010-08-07 1:34 Arnaldo Carvalho de Melo
2010-08-07 6:43 ` Ingo Molnar
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).