Re: [PATCH 1/1] rasd: Use perf_evlist__open() instead of open coded

Arnaldo Carvalho de Melo
2014-10-10T20:07:14Z

Em Tue, Oct 07, 2014 at 04:04:33PM +0200, Borislav Petkov escreveu:
> On Tue, Oct 07, 2014 at 10:32:36AM -0300, Arnaldo Carvalho de Melo wrote:
> > Hopefully we will completely remove the need to set up any thread or cpu
> > map, as what you want is syswide tracing, right?
>
> Yeah, I was questioning the need to open at least one thread even for
> system-wide tracing.

Ok, so what is now at my perf/hists branch at:

git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git

should do the trick, the patch below makes rasd.c use it. I'll try
building rasd.c with it and checking if it works.

Never having tried this, what are the requisites to test it? Some
specific hardware and a kernel with the right tracepoint? I guess some
recent 3.17-rc kernel is all that I need?

- Arnaldo

---

[PATCH] rasd: Use perf_evlist__open() instead of open coded equivalent

Cc: Borislav Petkov <bp@suse.de>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
src/rasd.c | 23 +++--------------------
1 file changed, 3 insertions(+), 20 deletions(-)

diff --git a/src/rasd.c b/src/rasd.c
index 06ccdcdd9d56..d3df9868388c 100644
--- a/src/rasd.c
+++ b/src/rasd.c
@@ -241,9 +241,6 @@ static void daemonize(void)

int main()
{
- struct perf_evsel *c;
- struct thread_map *threads;
- struct cpu_map *cpus;
int i;

/* Run the process as a daemon */
@@ -266,24 +263,10 @@ int main()
if (read_config_file())
err("error reading config file");

- /* Set cpu and threads maps */
- threads = thread_map__new(-1, getpid(), UINT_MAX);
- if (threads == NULL)
- err("allocating threads_map\n");
-
- cpus = cpu_map__new(NULL);
- if (cpus == NULL)
- err("allocating cpu_map\n");
-
- perf_evlist__set_maps(evlist, cpus, threads);
-
/* Open events */
- evlist__for_each(evlist, c) {
- /* On all online cpus by default, system wide tracing */
- if (perf_evsel__open(c, evlist->cpus, NULL) < 0)
- err("opening tracepoint, are you root?");
- }
- perf_evlist__set_id_pos(evlist);
+ /* On all online cpus by default, system wide tracing */
+ if (perf_evlist__open(evlist) < 0)
+ err("opening tracepoint, are you root?");

/* mmap buffers */
if (perf_evlist__mmap(evlist, 4 /* opts->mmap_pages */, false) < 0)
--
1.9.3