* Re: [PATCH 05/21] perf: rewire generic library stuff, p1
[not found] ` <20100701161054.GF8902@ghostprotocols.net>
@ 2010-07-01 16:17 ` Borislav Petkov
2010-07-01 17:14 ` Arnaldo Carvalho de Melo
0 siblings, 1 reply; 8+ messages in thread
From: Borislav Petkov @ 2010-07-01 16:17 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: Steven Rostedt, Peter Zijlstra, Ingo Molnar, Frederic Weisbecker,
LKML
From: Arnaldo Carvalho de Melo <acme@infradead.org>
Date: Thu, Jul 01, 2010 at 12:10:54PM -0400
Hi Arnaldo,
> Em Thu, Jul 01, 2010 at 12:47:37PM -0300, Arnaldo Carvalho de Melo escreveu:
> > Em Thu, Jul 01, 2010 at 03:49:19PM +0200, Borislav Petkov escreveu:
> > > From: Borislav Petkov <borislav.petkov@amd.com>
> > >
> > > Carve out generic library stuff into tools/lib/lk/ and rewire it with
> > > perf. Add a top-level Makefile which selects between targets depending
> > > on the tool we want to build. Also, add a Makefile.lib for common
> > > facilities used by all the Makefiles.
> >
> > Testing this now, thanks,
>
> Needs the patch below for "make O=~/build/perf tools" to continue
> working. Needs some more polishing so as not to break the non O= case.
>
> After lunch will investigate why my usual way to build the tools isn't working
> anymore, some missing -I probably:
>
> [acme@emilia linux-2.6-tip]$ make O=~/git/build/perf -C tools/perf install
> make: Entering directory `/home/acme/git/linux-2.6-tip/tools/perf'
> CC /home/acme/git/build/perf/builtin-record.o
> builtin-record.c:24:23: error: lk/cpumap.h: No such file or directory
> cc1: warnings being treated as errors
> builtin-record.c: In function ‘__cmd_record’:
> builtin-record.c:622: error: implicit declaration of function ‘read_cpu_map’
> builtin-record.c:632: error: ‘cpumap’ undeclared (first use in this function)
> builtin-record.c:632: error: (Each undeclared identifier is reported only once
> builtin-record.c:632: error: for each function it appears in.)
> make: *** [/home/acme/git/build/perf/builtin-record.o] Error 1
> make: Leaving directory `/home/acme/git/linux-2.6-tip/tools/perf'
> [acme@emilia linux-2.6-tip]$
>
> diff --git a/tools/lib/Makefile b/tools/lib/Makefile
> index 48f8e21..814673e 100644
> --- a/tools/lib/Makefile
> +++ b/tools/lib/Makefile
> @@ -5,6 +5,9 @@ LIB_H =
> LIB_OBJS =
>
> LIB_H += lk/cpumap.h
> +OUTPUT := $(OUTPUT)/lib/
> +
> +$(shell sh -c 'mkdir -p $(OUTPUT)/lk' 2> /dev/null)
>
> LIB_OBJS += $(OUTPUT)lk/bitmap.o
> LIB_OBJS += $(OUTPUT)lk/cpumap.o
I'll fix that up, thanks for testing.
--
Regards/Gruss,
Boris.
Advanced Micro Devices GmbH
Einsteinring 24, 85609 Dornach
General Managers: Alberto Bozzo, Andrew Bowd
Registration: Dornach, Gemeinde Aschheim, Landkreis Muenchen
Registergericht Muenchen, HRB Nr. 43632
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH 05/21] perf: rewire generic library stuff, p1
2010-07-01 16:17 ` [PATCH 05/21] perf: rewire generic library stuff, p1 Borislav Petkov
@ 2010-07-01 17:14 ` Arnaldo Carvalho de Melo
2010-07-01 20:14 ` Borislav Petkov
0 siblings, 1 reply; 8+ messages in thread
From: Arnaldo Carvalho de Melo @ 2010-07-01 17:14 UTC (permalink / raw)
To: Borislav Petkov
Cc: Steven Rostedt, Peter Zijlstra, Ingo Molnar, Frederic Weisbecker,
LKML
Em Thu, Jul 01, 2010 at 06:17:38PM +0200, Borislav Petkov escreveu:
> From: Arnaldo Carvalho de Melo <acme@infradead.org>
> Date: Thu, Jul 01, 2010 at 12:10:54PM -0400
>
> Hi Arnaldo,
>
> > Em Thu, Jul 01, 2010 at 12:47:37PM -0300, Arnaldo Carvalho de Melo escreveu:
> > > Em Thu, Jul 01, 2010 at 03:49:19PM +0200, Borislav Petkov escreveu:
> > > > From: Borislav Petkov <borislav.petkov@amd.com>
> > > >
> > > > Carve out generic library stuff into tools/lib/lk/ and rewire it with
> > > > perf. Add a top-level Makefile which selects between targets depending
> > > > on the tool we want to build. Also, add a Makefile.lib for common
> > > > facilities used by all the Makefiles.
> > >
> > > Testing this now, thanks,
> >
> > Needs the patch below for "make O=~/build/perf tools" to continue
> > working. Needs some more polishing so as not to break the non O= case.
> >
> > After lunch will investigate why my usual way to build the tools isn't working
> > anymore, some missing -I probably:
> >
> > [acme@emilia linux-2.6-tip]$ make O=~/git/build/perf -C tools/perf install
> > make: Entering directory `/home/acme/git/linux-2.6-tip/tools/perf'
> > CC /home/acme/git/build/perf/builtin-record.o
> > builtin-record.c:24:23: error: lk/cpumap.h: No such file or directory
> > cc1: warnings being treated as errors
The patch below fixes it.
But we have one other problem:
[acme@emilia linux-2.6-tip]$ make O=~/git/build/perf -C tools/
make: Entering directory `/home/acme/git/linux-2.6-tip/tools'
make[1]: Entering directory `/home/acme/git/linux-2.6-tip/tools/lib'
make[1]: `lklib.a' is up to date.
make[1]: Leaving directory `/home/acme/git/linux-2.6-tip/tools/lib'
make[1]: Entering directory `/home/acme/git/linux-2.6-tip/tools/perf'
GEN perf-archive
make[1]: Leaving directory `/home/acme/git/linux-2.6-tip/tools/perf'
make: Leaving directory `/home/acme/git/linux-2.6-tip/tools'
[acme@emilia linux-2.6-tip]$ make O=~/git/build/perf -C tools/perf/
make: Entering directory `/home/acme/git/linux-2.6-tip/tools/perf'
* new build flags or prefix
CC /home/acme/git/build/perf/perf.o
CC /home/acme/git/build/perf/builtin-annotate.o
CC /home/acme/git/build/perf/builtin-bench.o
The logic that detects "new build flags or prefix" gets confused when we
alternate between tools/ and tools/perf/, checking that.
- Arnaldo
diff --git a/tools/perf/Makefile b/tools/perf/Makefile
index 200fc13..72ccd17 100644
--- a/tools/perf/Makefile
+++ b/tools/perf/Makefile
@@ -268,7 +268,7 @@ endif
# Those must not be GNU-specific; they are shared with perl/ which may
# be built by a different compiler. (Note that this is an artifact now
# but it still might be nice to keep that distinction.)
-BASIC_CFLAGS += -Iutil/include -Iarch/$(ARCH)/include
+BASIC_CFLAGS += -Iutil/include -Iarch/$(ARCH)/include -I../lib/
BASIC_LDFLAGS =
# Guard against environment variables
^ permalink raw reply related [flat|nested] 8+ messages in thread* Re: [PATCH 05/21] perf: rewire generic library stuff, p1
2010-07-01 17:14 ` Arnaldo Carvalho de Melo
@ 2010-07-01 20:14 ` Borislav Petkov
2010-07-01 21:13 ` Arnaldo Carvalho de Melo
0 siblings, 1 reply; 8+ messages in thread
From: Borislav Petkov @ 2010-07-01 20:14 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: Steven Rostedt, Peter Zijlstra, Ingo Molnar, Frederic Weisbecker,
LKML
From: Arnaldo Carvalho de Melo <acme@infradead.org>
Date: Thu, Jul 01, 2010 at 01:14:49PM -0400
> > > Needs the patch below for "make O=~/build/perf tools" to continue
> > > working. Needs some more polishing so as not to break the non O= case.
> > >
> > > After lunch will investigate why my usual way to build the tools isn't working
> > > anymore, some missing -I probably:
> > >
> > > [acme@emilia linux-2.6-tip]$ make O=~/git/build/perf -C tools/perf install
> > > make: Entering directory `/home/acme/git/linux-2.6-tip/tools/perf'
> > > CC /home/acme/git/build/perf/builtin-record.o
> > > builtin-record.c:24:23: error: lk/cpumap.h: No such file or directory
> > > cc1: warnings being treated as errors
>
> The patch below fixes it.
>
> But we have one other problem:
>
> [acme@emilia linux-2.6-tip]$ make O=~/git/build/perf -C tools/
> make: Entering directory `/home/acme/git/linux-2.6-tip/tools'
> make[1]: Entering directory `/home/acme/git/linux-2.6-tip/tools/lib'
> make[1]: `lklib.a' is up to date.
> make[1]: Leaving directory `/home/acme/git/linux-2.6-tip/tools/lib'
> make[1]: Entering directory `/home/acme/git/linux-2.6-tip/tools/perf'
> GEN perf-archive
> make[1]: Leaving directory `/home/acme/git/linux-2.6-tip/tools/perf'
> make: Leaving directory `/home/acme/git/linux-2.6-tip/tools'
> [acme@emilia linux-2.6-tip]$ make O=~/git/build/perf -C tools/perf/
> make: Entering directory `/home/acme/git/linux-2.6-tip/tools/perf'
> * new build flags or prefix
> CC /home/acme/git/build/perf/perf.o
> CC /home/acme/git/build/perf/builtin-annotate.o
> CC /home/acme/git/build/perf/builtin-bench.o
>
> The logic that detects "new build flags or prefix" gets confused when we
> alternate between tools/ and tools/perf/, checking that.
This might need an up-to-date check for the lklib.a archive first and
not do "new build flags or prefix" if it is. Yeah, this is a different
library and the logic doesn't know about it.
> - Arnaldo
>
> diff --git a/tools/perf/Makefile b/tools/perf/Makefile
> index 200fc13..72ccd17 100644
> --- a/tools/perf/Makefile
> +++ b/tools/perf/Makefile
> @@ -268,7 +268,7 @@ endif
> # Those must not be GNU-specific; they are shared with perl/ which may
> # be built by a different compiler. (Note that this is an artifact now
> # but it still might be nice to keep that distinction.)
> -BASIC_CFLAGS += -Iutil/include -Iarch/$(ARCH)/include
> +BASIC_CFLAGS += -Iutil/include -Iarch/$(ARCH)/include -I../lib/
> BASIC_LDFLAGS =
Right, the whole scheme with the include paths is kinda shaky. I have
the -I$(CURDIR)/lib BASIC_CFLAGS in the top Makefile for the case where
we're in tools/ but this doesn't help with the -C switch as you show
above.
Maybe we should add more logic later to make the include path guessing
more robust no matter from which directory you execute make instead of
polluting BASIC_CFLAGS with duplicated path entries ... Hmmm...
--
Regards/Gruss,
Boris.
Advanced Micro Devices GmbH
Einsteinring 24, 85609 Dornach
General Managers: Alberto Bozzo, Andrew Bowd
Registration: Dornach, Gemeinde Aschheim, Landkreis Muenchen
Registergericht Muenchen, HRB Nr. 43632
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 05/21] perf: rewire generic library stuff, p1
2010-07-01 20:14 ` Borislav Petkov
@ 2010-07-01 21:13 ` Arnaldo Carvalho de Melo
2010-07-01 21:37 ` Borislav Petkov
0 siblings, 1 reply; 8+ messages in thread
From: Arnaldo Carvalho de Melo @ 2010-07-01 21:13 UTC (permalink / raw)
To: Borislav Petkov
Cc: Steven Rostedt, Peter Zijlstra, Ingo Molnar, Frederic Weisbecker,
LKML
Em Thu, Jul 01, 2010 at 10:14:18PM +0200, Borislav Petkov escreveu:
> From: Arnaldo Carvalho de Melo <acme@infradead.org>
> Date: Thu, Jul 01, 2010 at 01:14:49PM -0400
> > But we have one other problem:
> > [acme@emilia linux-2.6-tip]$ make O=~/git/build/perf -C tools/
> > make: Entering directory `/home/acme/git/linux-2.6-tip/tools'
> > make[1]: Entering directory `/home/acme/git/linux-2.6-tip/tools/lib'
> > make[1]: `lklib.a' is up to date.
> > make[1]: Leaving directory `/home/acme/git/linux-2.6-tip/tools/lib'
> > make[1]: Entering directory `/home/acme/git/linux-2.6-tip/tools/perf'
> > GEN perf-archive
> > make[1]: Leaving directory `/home/acme/git/linux-2.6-tip/tools/perf'
> > make: Leaving directory `/home/acme/git/linux-2.6-tip/tools'
> > [acme@emilia linux-2.6-tip]$ make O=~/git/build/perf -C tools/perf/
> > make: Entering directory `/home/acme/git/linux-2.6-tip/tools/perf'
> > * new build flags or prefix
> > CC /home/acme/git/build/perf/perf.o
> > CC /home/acme/git/build/perf/builtin-annotate.o
> >
> > The logic that detects "new build flags or prefix" gets confused when we
> > alternate between tools/ and tools/perf/, checking that.
>
> This might need an up-to-date check for the lklib.a archive first and
> not do "new build flags or prefix" if it is. Yeah, this is a different
> library and the logic doesn't know about it.
I got sidetracked, but this is what is in $(O)/PERF-CFLAGS for
make -C tools/
[acme@emilia linux-2.6-tip]$ cat ../build/perf/PERF-CFLAGS
-ggdb3 -Wall -Wextra -std=gnu99 -Werror -O6 -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Wformat-y2k -Wshadow -Winit-self -Wpacked -Wredundant-decls -Wstack-protector -Wstrict-aliasing=3 -Wswitch-default -Wswitch-enum -Wno-system-headers -Wundef -Wvolatile-register-var -Wwrite-strings -Wbad-function-cast -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wold-style-definition -Wstrict-prototypes -Wdeclaration-after-statement -fstack-protector-all -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -I/home/acme/git/linux-2.6-tip/tools/lib -I/home/acme/git/linux-2.6-tip/tools/perf -I/home/acme/git/linux-2.6-tip/tools/perf/util/include -Iutil/include -Iarch/x86/include -I../lib/ -I/home/acme/git/build/perf/ -DLIBELF_NO_MMAP -I/usr/include/elfutils -DDWARF_SUPPORT -I/usr/include/slang -DSHA1_HEADER='<openssl/sha.h>' : /home/acme/bin:libexec/perf-core:share/perf-core/templates:/home/acme
[acme@emilia linux-2.6-tip]$
And this is its contents if we use "make -C tools/perf/"
-ggdb3 -Wall -Wextra -std=gnu99 -Werror -O6 -D_FORTIFY_SOURCE=2 -fstack-protector-all -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Iutil/include -Iarch/x86/include -I../lib/ -I/home/acme/git/build/perf/ -DLIBELF_NO_MMAP -I/usr/include/elfutils -DDWARF_SUPPORT -I/usr/include/slang -DSHA1_HEADER='<openssl/sha.h>' : /home/acme/bin:libexec/perf-core:share/perf-core/templates:/home/acme
Its just a matter of making both match :-)
- Arnaldo
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 05/21] perf: rewire generic library stuff, p1
2010-07-01 21:13 ` Arnaldo Carvalho de Melo
@ 2010-07-01 21:37 ` Borislav Petkov
0 siblings, 0 replies; 8+ messages in thread
From: Borislav Petkov @ 2010-07-01 21:37 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: Steven Rostedt, Peter Zijlstra, Ingo Molnar, Frederic Weisbecker,
LKML
From: Arnaldo Carvalho de Melo <acme@infradead.org>
Date: Thu, Jul 01, 2010 at 05:13:31PM -0400
> Em Thu, Jul 01, 2010 at 10:14:18PM +0200, Borislav Petkov escreveu:
> > From: Arnaldo Carvalho de Melo <acme@infradead.org>
> > Date: Thu, Jul 01, 2010 at 01:14:49PM -0400
> > > But we have one other problem:
>
> > > [acme@emilia linux-2.6-tip]$ make O=~/git/build/perf -C tools/
> > > make: Entering directory `/home/acme/git/linux-2.6-tip/tools'
> > > make[1]: Entering directory `/home/acme/git/linux-2.6-tip/tools/lib'
> > > make[1]: `lklib.a' is up to date.
> > > make[1]: Leaving directory `/home/acme/git/linux-2.6-tip/tools/lib'
> > > make[1]: Entering directory `/home/acme/git/linux-2.6-tip/tools/perf'
> > > GEN perf-archive
> > > make[1]: Leaving directory `/home/acme/git/linux-2.6-tip/tools/perf'
> > > make: Leaving directory `/home/acme/git/linux-2.6-tip/tools'
> > > [acme@emilia linux-2.6-tip]$ make O=~/git/build/perf -C tools/perf/
> > > make: Entering directory `/home/acme/git/linux-2.6-tip/tools/perf'
> > > * new build flags or prefix
> > > CC /home/acme/git/build/perf/perf.o
> > > CC /home/acme/git/build/perf/builtin-annotate.o
> > >
> > > The logic that detects "new build flags or prefix" gets confused when we
> > > alternate between tools/ and tools/perf/, checking that.
> >
> > This might need an up-to-date check for the lklib.a archive first and
> > not do "new build flags or prefix" if it is. Yeah, this is a different
> > library and the logic doesn't know about it.
>
> I got sidetracked, but this is what is in $(O)/PERF-CFLAGS for
> make -C tools/
>
> [acme@emilia linux-2.6-tip]$ cat ../build/perf/PERF-CFLAGS
> -ggdb3 -Wall -Wextra -std=gnu99 -Werror -O6 -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Wformat-y2k -Wshadow -Winit-self -Wpacked -Wredundant-decls -Wstack-protector -Wstrict-aliasing=3 -Wswitch-default -Wswitch-enum -Wno-system-headers -Wundef -Wvolatile-register-var -Wwrite-strings -Wbad-function-cast -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wold-style-definition -Wstrict-prototypes -Wdeclaration-after-statement -fstack-protector-all -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -I/home/acme/git/linux-2.6-tip/tools/lib -I/home/acme/git/linux-2.6-tip/tools/perf -I/home/acme/git/linux-2.6-tip/tools/perf/util/include -Iutil/include -Iarch/x86/include -I../lib/ -I/home/acme/git/build/perf/ -DLIBELF_NO_MMAP -I/usr/include/elfutils -DDWARF_SUPPORT -I/usr/include/slang -DSHA1_HEADER='<openssl/sha.h>' : /home/acme/bin:libexec/perf-core:share/perf-core/templates:/home/acme
> [acme@emilia linux-2.6-tip]$
>
> And this is its contents if we use "make -C tools/perf/"
>
> -ggdb3 -Wall -Wextra -std=gnu99 -Werror -O6 -D_FORTIFY_SOURCE=2 -fstack-protector-all -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Iutil/include -Iarch/x86/include -I../lib/ -I/home/acme/git/build/perf/ -DLIBELF_NO_MMAP -I/usr/include/elfutils -DDWARF_SUPPORT -I/usr/include/slang -DSHA1_HEADER='<openssl/sha.h>' : /home/acme/bin:libexec/perf-core:share/perf-core/templates:/home/acme
>
> Its just a matter of making both match :-)
Oh yeah, I see the difference. The second one is missing all the -Wxxx
settings and the BASIS_CFLAGS with all the include paths which get
computed in the top Makefile and exported to the Makefiles in the
subdirectories. Hmm, maybe we should reroute the "make -C tools/perf/"
invocation to go up one dir and execute the top-Makefile after all...
I'll look into it soon, I'm almost falling asleep now :)
Good night.
--
Regards/Gruss,
Boris.
Advanced Micro Devices GmbH
Einsteinring 24, 85609 Dornach
General Managers: Alberto Bozzo, Andrew Bowd
Registration: Dornach, Gemeinde Aschheim, Landkreis Muenchen
Registergericht Muenchen, HRB Nr. 43632
^ permalink raw reply [flat|nested] 8+ messages in thread
[parent not found: <1277992175-19821-4-git-send-email-bp@amd64.org>]
* [RFC PATCH 00/21] RAS daemon prototype, v1
@ 2010-07-01 15:55 Borislav Petkov
2010-07-01 15:55 ` [PATCH 03/21] perf_events: Add a helper to search for an event in a context Borislav Petkov
0 siblings, 1 reply; 8+ messages in thread
From: Borislav Petkov @ 2010-07-01 15:55 UTC (permalink / raw)
To: linux-kernel
From: Borislav Petkov <borislav.petkov@amd.com>
(resubmitting since lkml wasn't on CC list)
Hi guys,
here's the first rough version of all the jerky code that attempts to
implement a RAS daemon listening for MCEs using perf. This is a preview
code only, I still need to figure out how to do the sample parsing
the easiest and flesh out the daemon functionality a bit more. Also,
I wanted to reuse as much code as possible therefore a lot had to be
reengineered with the perf tool and all its library-like compilation
units.
With this, you can do
make perf
or
make ras
and build the respective tool.
Even though I tried to split the patchset for easier review, please bear
in mind that there are some fat guys there (241K is the biggest one).
However, they don't do anything special except moving code around. As
such, they might not appear on lkml due to vger size constraints so I've
upped the whole patchset also at
git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp.git perf-v1
The patchset is based on tip/perf/core from last week. Here are some
more details to some of the patches individually:
2: enables the mce tracepoint unconditionally. I had a problem with
perf_event_attr.sample_period which is checked in perf_swevent_add().
Currently, I'm setting it to ULLONG_MAX but this is icky. I'd much
rather have the check do something like
if (event->type != PERF_EVENT_TYPE_PERSISTENT)
if (!hwc->sample_period)
return;
or similar.
4: sys_perf_event_open needs to know about already allocated and
enabled events.
5-10: carves out a bunch of generic perf compilation units into a common
lib. Split into 5 patches for easier review.
12-14: those are pulled in when exporting parse_events.c for external use.
16: lib/perf/misc.c contains functions and global variables like
pager_in_use() or perf_guest or usage_with_options() which are used in
generic utilities but are strictly perf-specific. Long term we should
strive in making the library self-contained and getting rid of those.
19-20: those are only needed for testing, they'll go in over the edac
tree in the next merge window. Added for completeness here.
21: only bare-bones implementation, needs a lot of fleshing out
Anyways, please have a look and let me know either way :)
Thanks,
Boris.
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 03/21] perf_events: Add a helper to search for an event in a context
2010-07-01 15:55 [RFC PATCH 00/21] RAS daemon prototype, v1 Borislav Petkov
@ 2010-07-01 15:55 ` Borislav Petkov
0 siblings, 0 replies; 8+ messages in thread
From: Borislav Petkov @ 2010-07-01 15:55 UTC (permalink / raw)
To: linux-kernel
From: Borislav Petkov <borislav.petkov@amd.com>
This is a straignt-forward helper to look for, e.g. already allocated
and enabled events (think persistent events here).
Signed-off-by: Borislav Petkov <borislav.petkov@amd.com>
---
kernel/perf_event.c | 21 +++++++++++++++++++++
1 files changed, 21 insertions(+), 0 deletions(-)
diff --git a/kernel/perf_event.c b/kernel/perf_event.c
index 40478af..168764b 100644
--- a/kernel/perf_event.c
+++ b/kernel/perf_event.c
@@ -307,6 +307,27 @@ list_add_event(struct perf_event *event, struct perf_event_context *ctx)
ctx->nr_stat++;
}
+/*
+ * Find an event in a context.
+ * Must be called with ctx->mutex and ctx->lock held.
+ */
+static struct perf_event *find_event_in_context(struct perf_event_attr *attr,
+ struct perf_event_context *ctx)
+{
+ struct perf_event *event;
+
+ rcu_read_lock();
+ list_for_each_entry_rcu(event, &ctx->event_list, event_entry) {
+ if (event->attr.config == attr->config) {
+ rcu_read_unlock();
+ return event;
+ }
+ }
+ rcu_read_unlock();
+
+ return NULL;
+}
+
static void perf_group_attach(struct perf_event *event)
{
struct perf_event *group_leader = event->group_leader;
--
1.7.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
end of thread, other threads:[~2010-07-01 21:51 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <1277992175-19821-1-git-send-email-bp@amd64.org>
[not found] ` <1277992175-19821-6-git-send-email-bp@amd64.org>
[not found] ` <20100701154737.GE8902@ghostprotocols.net>
[not found] ` <20100701161054.GF8902@ghostprotocols.net>
2010-07-01 16:17 ` [PATCH 05/21] perf: rewire generic library stuff, p1 Borislav Petkov
2010-07-01 17:14 ` Arnaldo Carvalho de Melo
2010-07-01 20:14 ` Borislav Petkov
2010-07-01 21:13 ` Arnaldo Carvalho de Melo
2010-07-01 21:37 ` Borislav Petkov
[not found] ` <1277992175-19821-4-git-send-email-bp@amd64.org>
[not found] ` <1277992805.1917.142.camel@laptop>
[not found] ` <20100701141352.GA17823@aftab>
[not found] ` <20100701161133.GE10616@nowhere>
[not found] ` <1278000765.1917.220.camel@laptop>
[not found] ` <20100701161448.GF10616@nowhere>
2010-07-01 16:24 ` [PATCH 03/21] perf_events: Add a helper to search for an event in a context Borislav Petkov
2010-07-01 16:27 ` Frederic Weisbecker
2010-07-01 15:55 [RFC PATCH 00/21] RAS daemon prototype, v1 Borislav Petkov
2010-07-01 15:55 ` [PATCH 03/21] perf_events: Add a helper to search for an event in a context Borislav Petkov
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox