* [PATCH 0/4] Fixes for perf/scripting
@ 2009-11-30 7:18 Tom Zanussi
2009-11-30 7:18 ` [PATCH 1/4] perf trace/scripting: silence PERL_EMBED_* backtick errors Tom Zanussi
` (4 more replies)
0 siblings, 5 replies; 11+ messages in thread
From: Tom Zanussi @ 2009-11-30 7:18 UTC (permalink / raw)
To: linux-kernel; +Cc: mingo, fweisbec, rostedt, anton, hch
Tom Zanussi (4):
perf trace/scripting: silence PERL_EMBED_* backtick errors
perf trace/scripting: ignore shadowed variable warning for
perf-trace-perl.c
perf trace/scripting: fix Perl common_* access functions
perf trace/scripting: Add Fedora libperl install note to doc
tools/perf/Makefile | 6 ++--
tools/perf/scripts/perl/Perf-Trace-Util/Context.c | 30 ++++++++++----------
tools/perf/scripts/perl/Perf-Trace-Util/Context.xs | 6 ++--
tools/perf/scripts/perl/Perf-Trace-Util/README | 4 +-
tools/perf/util/trace-event-perl.c | 10 ++++--
tools/perf/util/trace-event-perl.h | 6 ++--
6 files changed, 32 insertions(+), 30 deletions(-)
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 1/4] perf trace/scripting: silence PERL_EMBED_* backtick errors
2009-11-30 7:18 [PATCH 0/4] Fixes for perf/scripting Tom Zanussi
@ 2009-11-30 7:18 ` Tom Zanussi
2009-11-30 8:23 ` [tip:perf/scripting] perf trace/scripting: Silence " tip-bot for Tom Zanussi
2009-11-30 7:18 ` [PATCH 2/4] perf trace/scripting: ignore shadowed variable warning for perf-trace-perl.c Tom Zanussi
` (3 subsequent siblings)
4 siblings, 1 reply; 11+ messages in thread
From: Tom Zanussi @ 2009-11-30 7:18 UTC (permalink / raw)
To: linux-kernel; +Cc: mingo, fweisbec, rostedt, anton, hch
The backtick shell substitutions for PERL_EMBED_LDOPT/CCOPT make a lot
of noise on stderr if Embed.pm isn't installed - this silences them.
Signed-off-by: Tom Zanussi <tzanussi@gmail.com>
---
tools/perf/Makefile | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/tools/perf/Makefile b/tools/perf/Makefile
index 8ad57b5..d62a2d7 100644
--- a/tools/perf/Makefile
+++ b/tools/perf/Makefile
@@ -490,8 +490,8 @@ else
LIB_OBJS += util/probe-finder.o
endif
-PERL_EMBED_LDOPTS = `perl -MExtUtils::Embed -e ldopts`
-PERL_EMBED_CCOPTS = `perl -MExtUtils::Embed -e ccopts`
+PERL_EMBED_LDOPTS = `perl -MExtUtils::Embed -e ldopts 2>/dev/null`
+PERL_EMBED_CCOPTS = `perl -MExtUtils::Embed -e ccopts 2>/dev/null`
ifneq ($(shell sh -c "(echo '\#include <EXTERN.h>'; echo '\#include <perl.h>'; echo 'int main(void) { perl_alloc(); return 0; }') | $(CC) -x c - $(PERL_EMBED_CCOPTS) -o /dev/null $(PERL_EMBED_LDOPTS) > /dev/null 2>&1 && echo y"), y)
BASIC_CFLAGS += -DNO_LIBPERL
--
1.6.4.GIT
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 2/4] perf trace/scripting: ignore shadowed variable warning for perf-trace-perl.c
2009-11-30 7:18 [PATCH 0/4] Fixes for perf/scripting Tom Zanussi
2009-11-30 7:18 ` [PATCH 1/4] perf trace/scripting: silence PERL_EMBED_* backtick errors Tom Zanussi
@ 2009-11-30 7:18 ` Tom Zanussi
2009-11-30 8:23 ` [tip:perf/scripting] perf trace/scripting: Ignore " tip-bot for Tom Zanussi
2009-11-30 7:18 ` [PATCH 3/4] perf trace/scripting: fix Perl common_* access functions Tom Zanussi
` (2 subsequent siblings)
4 siblings, 1 reply; 11+ messages in thread
From: Tom Zanussi @ 2009-11-30 7:18 UTC (permalink / raw)
To: linux-kernel; +Cc: mingo, fweisbec, rostedt, anton, hch
The debugging versions of the ENTER and LEAVE internal perl macros,
used when embedding perl, define a local block with a my_perl perl
variable that shadows a global variable of the same name, which is
also the name expected by the embedding API for the embedded
interpreter. Since we don't have control over the code generated in
this case and can't get rid of the warning, ignore it.
Signed-off-by: Tom Zanussi <tzanussi@gmail.com>
---
tools/perf/Makefile | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/tools/perf/Makefile b/tools/perf/Makefile
index d62a2d7..20cd663 100644
--- a/tools/perf/Makefile
+++ b/tools/perf/Makefile
@@ -872,7 +872,7 @@ util/find_next_bit.o: ../../lib/find_next_bit.c PERF-CFLAGS
$(QUIET_CC)$(CC) -o util/find_next_bit.o -c $(ALL_CFLAGS) -DETC_PERFCONFIG='"$(ETC_PERFCONFIG_SQ)"' $<
util/trace-event-perl.o: util/trace-event-perl.c PERF-CFLAGS
- $(QUIET_CC)$(CC) -o util/trace-event-perl.o -c $(ALL_CFLAGS) $(PERL_EMBED_CCOPTS) -Wno-redundant-decls -Wno-strict-prototypes -Wno-unused-parameter $<
+ $(QUIET_CC)$(CC) -o util/trace-event-perl.o -c $(ALL_CFLAGS) $(PERL_EMBED_CCOPTS) -Wno-redundant-decls -Wno-strict-prototypes -Wno-unused-parameter -Wno-shadow $<
scripts/perl/Perf-Trace-Util/Context.o: scripts/perl/Perf-Trace-Util/Context.c PERF-CFLAGS
$(QUIET_CC)$(CC) -o scripts/perl/Perf-Trace-Util/Context.o -c $(ALL_CFLAGS) $(PERL_EMBED_CCOPTS) -Wno-redundant-decls -Wno-strict-prototypes -Wno-unused-parameter -Wno-nested-externs $<
--
1.6.4.GIT
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 3/4] perf trace/scripting: fix Perl common_* access functions
2009-11-30 7:18 [PATCH 0/4] Fixes for perf/scripting Tom Zanussi
2009-11-30 7:18 ` [PATCH 1/4] perf trace/scripting: silence PERL_EMBED_* backtick errors Tom Zanussi
2009-11-30 7:18 ` [PATCH 2/4] perf trace/scripting: ignore shadowed variable warning for perf-trace-perl.c Tom Zanussi
@ 2009-11-30 7:18 ` Tom Zanussi
2009-11-30 8:24 ` [tip:perf/scripting] perf trace/scripting: Fix " tip-bot for Tom Zanussi
2009-11-30 7:18 ` [PATCH 4/4] perf trace/scripting: Add Fedora libperl install note to doc Tom Zanussi
2009-11-30 8:19 ` [PATCH 0/4] Fixes for perf/scripting Ingo Molnar
4 siblings, 1 reply; 11+ messages in thread
From: Tom Zanussi @ 2009-11-30 7:18 UTC (permalink / raw)
To: linux-kernel; +Cc: mingo, fweisbec, rostedt, anton, hch
The common_* functions (e.g. common_pc(), etc) are exported as
common_* but named get_common_*, resulting in unresolved subroutine
errors when executing scripts. Make the internal and external names
match.
Signed-off-by: Tom Zanussi <tzanussi@gmail.com>
---
tools/perf/scripts/perl/Perf-Trace-Util/Context.c | 30 ++++++++++----------
tools/perf/scripts/perl/Perf-Trace-Util/Context.xs | 6 ++--
tools/perf/util/trace-event-perl.c | 6 ++--
tools/perf/util/trace-event-perl.h | 6 ++--
4 files changed, 24 insertions(+), 24 deletions(-)
diff --git a/tools/perf/scripts/perl/Perf-Trace-Util/Context.c b/tools/perf/scripts/perl/Perf-Trace-Util/Context.c
index 3ba3ffc..af78d9a 100644
--- a/tools/perf/scripts/perl/Perf-Trace-Util/Context.c
+++ b/tools/perf/scripts/perl/Perf-Trace-Util/Context.c
@@ -39,8 +39,8 @@
#line 41 "Context.c"
-XS(XS_Perf__Trace__Context_get_common_pc); /* prototype to pass -Wmissing-prototypes */
-XS(XS_Perf__Trace__Context_get_common_pc)
+XS(XS_Perf__Trace__Context_common_pc); /* prototype to pass -Wmissing-prototypes */
+XS(XS_Perf__Trace__Context_common_pc)
{
#ifdef dVAR
dVAR; dXSARGS;
@@ -48,22 +48,22 @@ XS(XS_Perf__Trace__Context_get_common_pc)
dXSARGS;
#endif
if (items != 1)
- Perl_croak(aTHX_ "Usage: %s(%s)", "Perf::Trace::Context::get_common_pc", "context");
+ Perl_croak(aTHX_ "Usage: %s(%s)", "Perf::Trace::Context::common_pc", "context");
PERL_UNUSED_VAR(cv); /* -W */
{
struct scripting_context * context = INT2PTR(struct scripting_context *,SvIV(ST(0)));
int RETVAL;
dXSTARG;
- RETVAL = get_common_pc(context);
+ RETVAL = common_pc(context);
XSprePUSH; PUSHi((IV)RETVAL);
}
XSRETURN(1);
}
-XS(XS_Perf__Trace__Context_get_common_flags); /* prototype to pass -Wmissing-prototypes */
-XS(XS_Perf__Trace__Context_get_common_flags)
+XS(XS_Perf__Trace__Context_common_flags); /* prototype to pass -Wmissing-prototypes */
+XS(XS_Perf__Trace__Context_common_flags)
{
#ifdef dVAR
dVAR; dXSARGS;
@@ -71,22 +71,22 @@ XS(XS_Perf__Trace__Context_get_common_flags)
dXSARGS;
#endif
if (items != 1)
- Perl_croak(aTHX_ "Usage: %s(%s)", "Perf::Trace::Context::get_common_flags", "context");
+ Perl_croak(aTHX_ "Usage: %s(%s)", "Perf::Trace::Context::common_flags", "context");
PERL_UNUSED_VAR(cv); /* -W */
{
struct scripting_context * context = INT2PTR(struct scripting_context *,SvIV(ST(0)));
int RETVAL;
dXSTARG;
- RETVAL = get_common_flags(context);
+ RETVAL = common_flags(context);
XSprePUSH; PUSHi((IV)RETVAL);
}
XSRETURN(1);
}
-XS(XS_Perf__Trace__Context_get_common_lock_depth); /* prototype to pass -Wmissing-prototypes */
-XS(XS_Perf__Trace__Context_get_common_lock_depth)
+XS(XS_Perf__Trace__Context_common_lock_depth); /* prototype to pass -Wmissing-prototypes */
+XS(XS_Perf__Trace__Context_common_lock_depth)
{
#ifdef dVAR
dVAR; dXSARGS;
@@ -94,14 +94,14 @@ XS(XS_Perf__Trace__Context_get_common_lock_depth)
dXSARGS;
#endif
if (items != 1)
- Perl_croak(aTHX_ "Usage: %s(%s)", "Perf::Trace::Context::get_common_lock_depth", "context");
+ Perl_croak(aTHX_ "Usage: %s(%s)", "Perf::Trace::Context::common_lock_depth", "context");
PERL_UNUSED_VAR(cv); /* -W */
{
struct scripting_context * context = INT2PTR(struct scripting_context *,SvIV(ST(0)));
int RETVAL;
dXSTARG;
- RETVAL = get_common_lock_depth(context);
+ RETVAL = common_lock_depth(context);
XSprePUSH; PUSHi((IV)RETVAL);
}
XSRETURN(1);
@@ -124,9 +124,9 @@ XS(boot_Perf__Trace__Context)
PERL_UNUSED_VAR(items); /* -W */
XS_VERSION_BOOTCHECK ;
- newXSproto("Perf::Trace::Context::get_common_pc", XS_Perf__Trace__Context_get_common_pc, file, "$");
- newXSproto("Perf::Trace::Context::get_common_flags", XS_Perf__Trace__Context_get_common_flags, file, "$");
- newXSproto("Perf::Trace::Context::get_common_lock_depth", XS_Perf__Trace__Context_get_common_lock_depth, file, "$");
+ newXSproto("Perf::Trace::Context::common_pc", XS_Perf__Trace__Context_common_pc, file, "$");
+ newXSproto("Perf::Trace::Context::common_flags", XS_Perf__Trace__Context_common_flags, file, "$");
+ newXSproto("Perf::Trace::Context::common_lock_depth", XS_Perf__Trace__Context_common_lock_depth, file, "$");
if (PL_unitcheckav)
call_list(PL_scopestack_ix, PL_unitcheckav);
XSRETURN_YES;
diff --git a/tools/perf/scripts/perl/Perf-Trace-Util/Context.xs b/tools/perf/scripts/perl/Perf-Trace-Util/Context.xs
index 24facb3..fb78006 100644
--- a/tools/perf/scripts/perl/Perf-Trace-Util/Context.xs
+++ b/tools/perf/scripts/perl/Perf-Trace-Util/Context.xs
@@ -28,14 +28,14 @@ MODULE = Perf::Trace::Context PACKAGE = Perf::Trace::Context
PROTOTYPES: ENABLE
int
-get_common_pc(context)
+common_pc(context)
struct scripting_context * context
int
-get_common_flags(context)
+common_flags(context)
struct scripting_context * context
int
-get_common_lock_depth(context)
+common_lock_depth(context)
struct scripting_context * context
diff --git a/tools/perf/util/trace-event-perl.c b/tools/perf/util/trace-event-perl.c
index d179ade..2e1cc3c 100644
--- a/tools/perf/util/trace-event-perl.c
+++ b/tools/perf/util/trace-event-perl.c
@@ -242,7 +242,7 @@ static inline struct event *find_cache_event(int type)
return event;
}
-int get_common_pc(struct scripting_context *context)
+int common_pc(struct scripting_context *context)
{
int pc;
@@ -251,7 +251,7 @@ int get_common_pc(struct scripting_context *context)
return pc;
}
-int get_common_flags(struct scripting_context *context)
+int common_flags(struct scripting_context *context)
{
int flags;
@@ -260,7 +260,7 @@ int get_common_flags(struct scripting_context *context)
return flags;
}
-int get_common_lock_depth(struct scripting_context *context)
+int common_lock_depth(struct scripting_context *context)
{
int lock_depth;
diff --git a/tools/perf/util/trace-event-perl.h b/tools/perf/util/trace-event-perl.h
index 666a864..8fe0d86 100644
--- a/tools/perf/util/trace-event-perl.h
+++ b/tools/perf/util/trace-event-perl.h
@@ -44,8 +44,8 @@ struct scripting_context {
void *event_data;
};
-int get_common_pc(struct scripting_context *context);
-int get_common_flags(struct scripting_context *context);
-int get_common_lock_depth(struct scripting_context *context);
+int common_pc(struct scripting_context *context);
+int common_flags(struct scripting_context *context);
+int common_lock_depth(struct scripting_context *context);
#endif /* __PERF_TRACE_EVENT_PERL_H */
--
1.6.4.GIT
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 4/4] perf trace/scripting: Add Fedora libperl install note to doc
2009-11-30 7:18 [PATCH 0/4] Fixes for perf/scripting Tom Zanussi
` (2 preceding siblings ...)
2009-11-30 7:18 ` [PATCH 3/4] perf trace/scripting: fix Perl common_* access functions Tom Zanussi
@ 2009-11-30 7:18 ` Tom Zanussi
2009-11-30 8:24 ` [tip:perf/scripting] " tip-bot for Tom Zanussi
2009-11-30 8:19 ` [PATCH 0/4] Fixes for perf/scripting Ingo Molnar
4 siblings, 1 reply; 11+ messages in thread
From: Tom Zanussi @ 2009-11-30 7:18 UTC (permalink / raw)
To: linux-kernel; +Cc: mingo, fweisbec, rostedt, anton, hch
Fedora needs perl-ExtUtils-Embed for Perl scripting, which also brings
along libperl-devel; note this info for the convenience of Fedora
users.
Signed-off-by: Tom Zanussi <tzanussi@gmail.com>
---
tools/perf/scripts/perl/Perf-Trace-Util/README | 4 ++--
tools/perf/util/trace-event-perl.c | 4 +++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/tools/perf/scripts/perl/Perf-Trace-Util/README b/tools/perf/scripts/perl/Perf-Trace-Util/README
index adb99aa..9a97076 100644
--- a/tools/perf/scripts/perl/Perf-Trace-Util/README
+++ b/tools/perf/scripts/perl/Perf-Trace-Util/README
@@ -36,8 +36,8 @@ INSTALLATION
Building perf with perf trace Perl scripting should install this
module in the right place.
-You should make sure libperl is installed first e.g. apt-get install
-libperl-dev.
+You should make sure libperl and ExtUtils/Embed.pm are installed first
+e.g. apt-get install libperl-dev or yum install perl-ExtUtils-Embed.
DEPENDENCIES
diff --git a/tools/perf/util/trace-event-perl.c b/tools/perf/util/trace-event-perl.c
index 2e1cc3c..51e833f 100644
--- a/tools/perf/util/trace-event-perl.c
+++ b/tools/perf/util/trace-event-perl.c
@@ -577,7 +577,9 @@ struct scripting_ops perl_scripting_ops = {
void setup_perl_scripting(void)
{
fprintf(stderr, "Perl scripting not supported."
- " Install libperl-dev[el] and rebuild perf to get it.\n");
+ " Install libperl and rebuild perf to enable it. e.g. "
+ "apt-get install libperl-dev (ubuntu), yum install "
+ "perl-ExtUtils-Embed (Fedora), etc.\n");
}
#else
void setup_perl_scripting(void)
--
1.6.4.GIT
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH 0/4] Fixes for perf/scripting
2009-11-30 7:18 [PATCH 0/4] Fixes for perf/scripting Tom Zanussi
` (3 preceding siblings ...)
2009-11-30 7:18 ` [PATCH 4/4] perf trace/scripting: Add Fedora libperl install note to doc Tom Zanussi
@ 2009-11-30 8:19 ` Ingo Molnar
2009-12-01 5:30 ` Tom Zanussi
4 siblings, 1 reply; 11+ messages in thread
From: Ingo Molnar @ 2009-11-30 8:19 UTC (permalink / raw)
To: Tom Zanussi
Cc: linux-kernel, fweisbec, rostedt, anton, hch, Peter Zijlstra,
Arnaldo Carvalho de Melo, Thomas Gleixner, Arjan van de Ven
* Tom Zanussi <tzanussi@gmail.com> wrote:
> Tom Zanussi (4):
> perf trace/scripting: silence PERL_EMBED_* backtick errors
> perf trace/scripting: ignore shadowed variable warning for
> perf-trace-perl.c
> perf trace/scripting: fix Perl common_* access functions
> perf trace/scripting: Add Fedora libperl install note to doc
>
> tools/perf/Makefile | 6 ++--
> tools/perf/scripts/perl/Perf-Trace-Util/Context.c | 30 ++++++++++----------
> tools/perf/scripts/perl/Perf-Trace-Util/Context.xs | 6 ++--
> tools/perf/scripts/perl/Perf-Trace-Util/README | 4 +-
> tools/perf/util/trace-event-perl.c | 10 ++++--
> tools/perf/util/trace-event-perl.h | 6 ++--
> 6 files changed, 32 insertions(+), 30 deletions(-)
Applied, thanks Tom!
I tried a few simple things and it worked fine, so i put it into the
permanent perf/scripting branch. I think this looks like a nice feature:
a perfect fit to do rapid prototyping of tracing applets. (or just to
use it for ad-hoc, programming based analysis of tracing data)
There's a few odd ends to 'perf trace' usability we need to fix before
this can be merged into perf/core. For example if libperl isnt
installed, 'perf trace' emits this warning:
Perl scripting not supported. Install libperl and rebuild perf to
enable it. e.g. apt-get install libperl-dev (ubuntu), yum install
perl-ExtUtils-Embed (Fedora), etc.
We should only emit that if -g or -s is used - it's a nuisance in the
other cases. Most distributions dont have libperl installed by default.
Also, a few simple examples and some heads-up about the power of
scripting should be put into Documentation/perf-trace.txt as well.
Something minimal - and it can include a Perl example as well. Some
practical version of perl/Perf-Trace-Util/README or so. We want curious
people who know Perl and try 'perf trace --help' to have some minimal
entry vector into this space.
A third question is - right now we install the sample Perl scripts on
'make install', but there's no mechanism to see the scripts that are
available. 'perf trace -l/--list' might be useful?
I.e. the whole pathway of random perf users coming in and starting to
use the script engine 'spontaneusly' and 'intuitively' is not yet
thought through - the capabilities are hidden too much.
Thanks,
Ingo
^ permalink raw reply [flat|nested] 11+ messages in thread
* [tip:perf/scripting] perf trace/scripting: Silence PERL_EMBED_* backtick errors
2009-11-30 7:18 ` [PATCH 1/4] perf trace/scripting: silence PERL_EMBED_* backtick errors Tom Zanussi
@ 2009-11-30 8:23 ` tip-bot for Tom Zanussi
0 siblings, 0 replies; 11+ messages in thread
From: tip-bot for Tom Zanussi @ 2009-11-30 8:23 UTC (permalink / raw)
To: linux-tip-commits; +Cc: linux-kernel, hpa, mingo, tzanussi, tglx, mingo
Commit-ID: f8be4231f82ab56a87ce74906671afbe1aa9ec75
Gitweb: http://git.kernel.org/tip/f8be4231f82ab56a87ce74906671afbe1aa9ec75
Author: Tom Zanussi <tzanussi@gmail.com>
AuthorDate: Mon, 30 Nov 2009 01:18:46 -0600
Committer: Ingo Molnar <mingo@elte.hu>
CommitDate: Mon, 30 Nov 2009 09:03:59 +0100
perf trace/scripting: Silence PERL_EMBED_* backtick errors
The backtick shell substitutions for PERL_EMBED_LDOPT/CCOPT make
a lot of noise on stderr if Embed.pm isn't installed - this
silences them.
Signed-off-by: Tom Zanussi <tzanussi@gmail.com>
Cc: fweisbec@gmail.com
Cc: rostedt@goodmis.org
Cc: anton@samba.org
Cc: hch@infradead.org
LKML-Reference: <1259565529-6407-2-git-send-email-tzanussi@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
---
tools/perf/Makefile | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/tools/perf/Makefile b/tools/perf/Makefile
index 8ad57b5..d62a2d7 100644
--- a/tools/perf/Makefile
+++ b/tools/perf/Makefile
@@ -490,8 +490,8 @@ else
LIB_OBJS += util/probe-finder.o
endif
-PERL_EMBED_LDOPTS = `perl -MExtUtils::Embed -e ldopts`
-PERL_EMBED_CCOPTS = `perl -MExtUtils::Embed -e ccopts`
+PERL_EMBED_LDOPTS = `perl -MExtUtils::Embed -e ldopts 2>/dev/null`
+PERL_EMBED_CCOPTS = `perl -MExtUtils::Embed -e ccopts 2>/dev/null`
ifneq ($(shell sh -c "(echo '\#include <EXTERN.h>'; echo '\#include <perl.h>'; echo 'int main(void) { perl_alloc(); return 0; }') | $(CC) -x c - $(PERL_EMBED_CCOPTS) -o /dev/null $(PERL_EMBED_LDOPTS) > /dev/null 2>&1 && echo y"), y)
BASIC_CFLAGS += -DNO_LIBPERL
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [tip:perf/scripting] perf trace/scripting: Ignore shadowed variable warning for perf-trace-perl.c
2009-11-30 7:18 ` [PATCH 2/4] perf trace/scripting: ignore shadowed variable warning for perf-trace-perl.c Tom Zanussi
@ 2009-11-30 8:23 ` tip-bot for Tom Zanussi
0 siblings, 0 replies; 11+ messages in thread
From: tip-bot for Tom Zanussi @ 2009-11-30 8:23 UTC (permalink / raw)
To: linux-tip-commits; +Cc: linux-kernel, hpa, mingo, tzanussi, tglx, mingo
Commit-ID: e136323c5a8a7d91d17c5b7b340758bb9dd33739
Gitweb: http://git.kernel.org/tip/e136323c5a8a7d91d17c5b7b340758bb9dd33739
Author: Tom Zanussi <tzanussi@gmail.com>
AuthorDate: Mon, 30 Nov 2009 01:18:47 -0600
Committer: Ingo Molnar <mingo@elte.hu>
CommitDate: Mon, 30 Nov 2009 09:04:00 +0100
perf trace/scripting: Ignore shadowed variable warning for perf-trace-perl.c
The debugging versions of the ENTER and LEAVE internal perl
macros, used when embedding perl, define a local block with a
my_perl perl variable that shadows a global variable of the same
name, which is also the name expected by the embedding API for
the embedded interpreter.
Since we don't have control over the code generated in this case
(it's an externality) and can't get rid of the warning, ignore it.
Signed-off-by: Tom Zanussi <tzanussi@gmail.com>
Cc: fweisbec@gmail.com
Cc: rostedt@goodmis.org
Cc: anton@samba.org
Cc: hch@infradead.org
LKML-Reference: <1259565529-6407-3-git-send-email-tzanussi@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
---
tools/perf/Makefile | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/tools/perf/Makefile b/tools/perf/Makefile
index d62a2d7..20cd663 100644
--- a/tools/perf/Makefile
+++ b/tools/perf/Makefile
@@ -872,7 +872,7 @@ util/find_next_bit.o: ../../lib/find_next_bit.c PERF-CFLAGS
$(QUIET_CC)$(CC) -o util/find_next_bit.o -c $(ALL_CFLAGS) -DETC_PERFCONFIG='"$(ETC_PERFCONFIG_SQ)"' $<
util/trace-event-perl.o: util/trace-event-perl.c PERF-CFLAGS
- $(QUIET_CC)$(CC) -o util/trace-event-perl.o -c $(ALL_CFLAGS) $(PERL_EMBED_CCOPTS) -Wno-redundant-decls -Wno-strict-prototypes -Wno-unused-parameter $<
+ $(QUIET_CC)$(CC) -o util/trace-event-perl.o -c $(ALL_CFLAGS) $(PERL_EMBED_CCOPTS) -Wno-redundant-decls -Wno-strict-prototypes -Wno-unused-parameter -Wno-shadow $<
scripts/perl/Perf-Trace-Util/Context.o: scripts/perl/Perf-Trace-Util/Context.c PERF-CFLAGS
$(QUIET_CC)$(CC) -o scripts/perl/Perf-Trace-Util/Context.o -c $(ALL_CFLAGS) $(PERL_EMBED_CCOPTS) -Wno-redundant-decls -Wno-strict-prototypes -Wno-unused-parameter -Wno-nested-externs $<
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [tip:perf/scripting] perf trace/scripting: Fix Perl common_* access functions
2009-11-30 7:18 ` [PATCH 3/4] perf trace/scripting: fix Perl common_* access functions Tom Zanussi
@ 2009-11-30 8:24 ` tip-bot for Tom Zanussi
0 siblings, 0 replies; 11+ messages in thread
From: tip-bot for Tom Zanussi @ 2009-11-30 8:24 UTC (permalink / raw)
To: linux-tip-commits; +Cc: linux-kernel, hpa, mingo, tzanussi, tglx, mingo
Commit-ID: 61381de0504181368672a83d2e14c38dbaf3c136
Gitweb: http://git.kernel.org/tip/61381de0504181368672a83d2e14c38dbaf3c136
Author: Tom Zanussi <tzanussi@gmail.com>
AuthorDate: Mon, 30 Nov 2009 01:18:48 -0600
Committer: Ingo Molnar <mingo@elte.hu>
CommitDate: Mon, 30 Nov 2009 09:04:00 +0100
perf trace/scripting: Fix Perl common_* access functions
The common_* functions (e.g. common_pc(), etc) are exported as
common_* but named get_common_*, resulting in unresolved
subroutine errors when executing scripts.
Make the internal and external names match.
Signed-off-by: Tom Zanussi <tzanussi@gmail.com>
Cc: fweisbec@gmail.com
Cc: rostedt@goodmis.org
Cc: anton@samba.org
Cc: hch@infradead.org
LKML-Reference: <1259565529-6407-4-git-send-email-tzanussi@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
---
tools/perf/scripts/perl/Perf-Trace-Util/Context.c | 30 ++++++++++----------
tools/perf/scripts/perl/Perf-Trace-Util/Context.xs | 6 ++--
tools/perf/util/trace-event-perl.c | 6 ++--
tools/perf/util/trace-event-perl.h | 6 ++--
4 files changed, 24 insertions(+), 24 deletions(-)
diff --git a/tools/perf/scripts/perl/Perf-Trace-Util/Context.c b/tools/perf/scripts/perl/Perf-Trace-Util/Context.c
index 3ba3ffc..af78d9a 100644
--- a/tools/perf/scripts/perl/Perf-Trace-Util/Context.c
+++ b/tools/perf/scripts/perl/Perf-Trace-Util/Context.c
@@ -39,8 +39,8 @@
#line 41 "Context.c"
-XS(XS_Perf__Trace__Context_get_common_pc); /* prototype to pass -Wmissing-prototypes */
-XS(XS_Perf__Trace__Context_get_common_pc)
+XS(XS_Perf__Trace__Context_common_pc); /* prototype to pass -Wmissing-prototypes */
+XS(XS_Perf__Trace__Context_common_pc)
{
#ifdef dVAR
dVAR; dXSARGS;
@@ -48,22 +48,22 @@ XS(XS_Perf__Trace__Context_get_common_pc)
dXSARGS;
#endif
if (items != 1)
- Perl_croak(aTHX_ "Usage: %s(%s)", "Perf::Trace::Context::get_common_pc", "context");
+ Perl_croak(aTHX_ "Usage: %s(%s)", "Perf::Trace::Context::common_pc", "context");
PERL_UNUSED_VAR(cv); /* -W */
{
struct scripting_context * context = INT2PTR(struct scripting_context *,SvIV(ST(0)));
int RETVAL;
dXSTARG;
- RETVAL = get_common_pc(context);
+ RETVAL = common_pc(context);
XSprePUSH; PUSHi((IV)RETVAL);
}
XSRETURN(1);
}
-XS(XS_Perf__Trace__Context_get_common_flags); /* prototype to pass -Wmissing-prototypes */
-XS(XS_Perf__Trace__Context_get_common_flags)
+XS(XS_Perf__Trace__Context_common_flags); /* prototype to pass -Wmissing-prototypes */
+XS(XS_Perf__Trace__Context_common_flags)
{
#ifdef dVAR
dVAR; dXSARGS;
@@ -71,22 +71,22 @@ XS(XS_Perf__Trace__Context_get_common_flags)
dXSARGS;
#endif
if (items != 1)
- Perl_croak(aTHX_ "Usage: %s(%s)", "Perf::Trace::Context::get_common_flags", "context");
+ Perl_croak(aTHX_ "Usage: %s(%s)", "Perf::Trace::Context::common_flags", "context");
PERL_UNUSED_VAR(cv); /* -W */
{
struct scripting_context * context = INT2PTR(struct scripting_context *,SvIV(ST(0)));
int RETVAL;
dXSTARG;
- RETVAL = get_common_flags(context);
+ RETVAL = common_flags(context);
XSprePUSH; PUSHi((IV)RETVAL);
}
XSRETURN(1);
}
-XS(XS_Perf__Trace__Context_get_common_lock_depth); /* prototype to pass -Wmissing-prototypes */
-XS(XS_Perf__Trace__Context_get_common_lock_depth)
+XS(XS_Perf__Trace__Context_common_lock_depth); /* prototype to pass -Wmissing-prototypes */
+XS(XS_Perf__Trace__Context_common_lock_depth)
{
#ifdef dVAR
dVAR; dXSARGS;
@@ -94,14 +94,14 @@ XS(XS_Perf__Trace__Context_get_common_lock_depth)
dXSARGS;
#endif
if (items != 1)
- Perl_croak(aTHX_ "Usage: %s(%s)", "Perf::Trace::Context::get_common_lock_depth", "context");
+ Perl_croak(aTHX_ "Usage: %s(%s)", "Perf::Trace::Context::common_lock_depth", "context");
PERL_UNUSED_VAR(cv); /* -W */
{
struct scripting_context * context = INT2PTR(struct scripting_context *,SvIV(ST(0)));
int RETVAL;
dXSTARG;
- RETVAL = get_common_lock_depth(context);
+ RETVAL = common_lock_depth(context);
XSprePUSH; PUSHi((IV)RETVAL);
}
XSRETURN(1);
@@ -124,9 +124,9 @@ XS(boot_Perf__Trace__Context)
PERL_UNUSED_VAR(items); /* -W */
XS_VERSION_BOOTCHECK ;
- newXSproto("Perf::Trace::Context::get_common_pc", XS_Perf__Trace__Context_get_common_pc, file, "$");
- newXSproto("Perf::Trace::Context::get_common_flags", XS_Perf__Trace__Context_get_common_flags, file, "$");
- newXSproto("Perf::Trace::Context::get_common_lock_depth", XS_Perf__Trace__Context_get_common_lock_depth, file, "$");
+ newXSproto("Perf::Trace::Context::common_pc", XS_Perf__Trace__Context_common_pc, file, "$");
+ newXSproto("Perf::Trace::Context::common_flags", XS_Perf__Trace__Context_common_flags, file, "$");
+ newXSproto("Perf::Trace::Context::common_lock_depth", XS_Perf__Trace__Context_common_lock_depth, file, "$");
if (PL_unitcheckav)
call_list(PL_scopestack_ix, PL_unitcheckav);
XSRETURN_YES;
diff --git a/tools/perf/scripts/perl/Perf-Trace-Util/Context.xs b/tools/perf/scripts/perl/Perf-Trace-Util/Context.xs
index 24facb3..fb78006 100644
--- a/tools/perf/scripts/perl/Perf-Trace-Util/Context.xs
+++ b/tools/perf/scripts/perl/Perf-Trace-Util/Context.xs
@@ -28,14 +28,14 @@ MODULE = Perf::Trace::Context PACKAGE = Perf::Trace::Context
PROTOTYPES: ENABLE
int
-get_common_pc(context)
+common_pc(context)
struct scripting_context * context
int
-get_common_flags(context)
+common_flags(context)
struct scripting_context * context
int
-get_common_lock_depth(context)
+common_lock_depth(context)
struct scripting_context * context
diff --git a/tools/perf/util/trace-event-perl.c b/tools/perf/util/trace-event-perl.c
index d179ade..2e1cc3c 100644
--- a/tools/perf/util/trace-event-perl.c
+++ b/tools/perf/util/trace-event-perl.c
@@ -242,7 +242,7 @@ static inline struct event *find_cache_event(int type)
return event;
}
-int get_common_pc(struct scripting_context *context)
+int common_pc(struct scripting_context *context)
{
int pc;
@@ -251,7 +251,7 @@ int get_common_pc(struct scripting_context *context)
return pc;
}
-int get_common_flags(struct scripting_context *context)
+int common_flags(struct scripting_context *context)
{
int flags;
@@ -260,7 +260,7 @@ int get_common_flags(struct scripting_context *context)
return flags;
}
-int get_common_lock_depth(struct scripting_context *context)
+int common_lock_depth(struct scripting_context *context)
{
int lock_depth;
diff --git a/tools/perf/util/trace-event-perl.h b/tools/perf/util/trace-event-perl.h
index 666a864..8fe0d86 100644
--- a/tools/perf/util/trace-event-perl.h
+++ b/tools/perf/util/trace-event-perl.h
@@ -44,8 +44,8 @@ struct scripting_context {
void *event_data;
};
-int get_common_pc(struct scripting_context *context);
-int get_common_flags(struct scripting_context *context);
-int get_common_lock_depth(struct scripting_context *context);
+int common_pc(struct scripting_context *context);
+int common_flags(struct scripting_context *context);
+int common_lock_depth(struct scripting_context *context);
#endif /* __PERF_TRACE_EVENT_PERL_H */
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [tip:perf/scripting] perf trace/scripting: Add Fedora libperl install note to doc
2009-11-30 7:18 ` [PATCH 4/4] perf trace/scripting: Add Fedora libperl install note to doc Tom Zanussi
@ 2009-11-30 8:24 ` tip-bot for Tom Zanussi
0 siblings, 0 replies; 11+ messages in thread
From: tip-bot for Tom Zanussi @ 2009-11-30 8:24 UTC (permalink / raw)
To: linux-tip-commits; +Cc: linux-kernel, hpa, mingo, tzanussi, tglx, mingo
Commit-ID: 8ea339adc0a48236008e59dd21564d71c37b331c
Gitweb: http://git.kernel.org/tip/8ea339adc0a48236008e59dd21564d71c37b331c
Author: Tom Zanussi <tzanussi@gmail.com>
AuthorDate: Mon, 30 Nov 2009 01:18:49 -0600
Committer: Ingo Molnar <mingo@elte.hu>
CommitDate: Mon, 30 Nov 2009 09:04:01 +0100
perf trace/scripting: Add Fedora libperl install note to doc
Fedora needs perl-ExtUtils-Embed for Perl scripting, which also
brings along libperl-devel; note this info for the convenience
of Fedora users.
Signed-off-by: Tom Zanussi <tzanussi@gmail.com>
Cc: fweisbec@gmail.com
Cc: rostedt@goodmis.org
Cc: anton@samba.org
Cc: hch@infradead.org
LKML-Reference: <1259565529-6407-5-git-send-email-tzanussi@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
---
tools/perf/scripts/perl/Perf-Trace-Util/README | 4 ++--
tools/perf/util/trace-event-perl.c | 4 +++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/tools/perf/scripts/perl/Perf-Trace-Util/README b/tools/perf/scripts/perl/Perf-Trace-Util/README
index adb99aa..9a97076 100644
--- a/tools/perf/scripts/perl/Perf-Trace-Util/README
+++ b/tools/perf/scripts/perl/Perf-Trace-Util/README
@@ -36,8 +36,8 @@ INSTALLATION
Building perf with perf trace Perl scripting should install this
module in the right place.
-You should make sure libperl is installed first e.g. apt-get install
-libperl-dev.
+You should make sure libperl and ExtUtils/Embed.pm are installed first
+e.g. apt-get install libperl-dev or yum install perl-ExtUtils-Embed.
DEPENDENCIES
diff --git a/tools/perf/util/trace-event-perl.c b/tools/perf/util/trace-event-perl.c
index 2e1cc3c..51e833f 100644
--- a/tools/perf/util/trace-event-perl.c
+++ b/tools/perf/util/trace-event-perl.c
@@ -577,7 +577,9 @@ struct scripting_ops perl_scripting_ops = {
void setup_perl_scripting(void)
{
fprintf(stderr, "Perl scripting not supported."
- " Install libperl-dev[el] and rebuild perf to get it.\n");
+ " Install libperl and rebuild perf to enable it. e.g. "
+ "apt-get install libperl-dev (ubuntu), yum install "
+ "perl-ExtUtils-Embed (Fedora), etc.\n");
}
#else
void setup_perl_scripting(void)
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH 0/4] Fixes for perf/scripting
2009-11-30 8:19 ` [PATCH 0/4] Fixes for perf/scripting Ingo Molnar
@ 2009-12-01 5:30 ` Tom Zanussi
0 siblings, 0 replies; 11+ messages in thread
From: Tom Zanussi @ 2009-12-01 5:30 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, fweisbec, rostedt, anton, hch, Peter Zijlstra,
Arnaldo Carvalho de Melo, Thomas Gleixner, Arjan van de Ven
On Mon, 2009-11-30 at 09:19 +0100, Ingo Molnar wrote:
> * Tom Zanussi <tzanussi@gmail.com> wrote:
>
> > Tom Zanussi (4):
> > perf trace/scripting: silence PERL_EMBED_* backtick errors
> > perf trace/scripting: ignore shadowed variable warning for
> > perf-trace-perl.c
> > perf trace/scripting: fix Perl common_* access functions
> > perf trace/scripting: Add Fedora libperl install note to doc
> >
> > tools/perf/Makefile | 6 ++--
> > tools/perf/scripts/perl/Perf-Trace-Util/Context.c | 30 ++++++++++----------
> > tools/perf/scripts/perl/Perf-Trace-Util/Context.xs | 6 ++--
> > tools/perf/scripts/perl/Perf-Trace-Util/README | 4 +-
> > tools/perf/util/trace-event-perl.c | 10 ++++--
> > tools/perf/util/trace-event-perl.h | 6 ++--
> > 6 files changed, 32 insertions(+), 30 deletions(-)
>
> Applied, thanks Tom!
>
> I tried a few simple things and it worked fine, so i put it into the
> permanent perf/scripting branch. I think this looks like a nice feature:
> a perfect fit to do rapid prototyping of tracing applets. (or just to
> use it for ad-hoc, programming based analysis of tracing data)
>
Great, thanks!
I agree that usability is key and could use some more work - I'll submit
some more patches addressing that soon...
Thanks,
Tom
> There's a few odd ends to 'perf trace' usability we need to fix before
> this can be merged into perf/core. For example if libperl isnt
> installed, 'perf trace' emits this warning:
>
> Perl scripting not supported. Install libperl and rebuild perf to
> enable it. e.g. apt-get install libperl-dev (ubuntu), yum install
> perl-ExtUtils-Embed (Fedora), etc.
>
> We should only emit that if -g or -s is used - it's a nuisance in the
> other cases. Most distributions dont have libperl installed by default.
>
> Also, a few simple examples and some heads-up about the power of
> scripting should be put into Documentation/perf-trace.txt as well.
> Something minimal - and it can include a Perl example as well. Some
> practical version of perl/Perf-Trace-Util/README or so. We want curious
> people who know Perl and try 'perf trace --help' to have some minimal
> entry vector into this space.
>
> A third question is - right now we install the sample Perl scripts on
> 'make install', but there's no mechanism to see the scripts that are
> available. 'perf trace -l/--list' might be useful?
>
> I.e. the whole pathway of random perf users coming in and starting to
> use the script engine 'spontaneusly' and 'intuitively' is not yet
> thought through - the capabilities are hidden too much.
>
> Thanks,
>
> Ingo
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2009-12-01 5:30 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-11-30 7:18 [PATCH 0/4] Fixes for perf/scripting Tom Zanussi
2009-11-30 7:18 ` [PATCH 1/4] perf trace/scripting: silence PERL_EMBED_* backtick errors Tom Zanussi
2009-11-30 8:23 ` [tip:perf/scripting] perf trace/scripting: Silence " tip-bot for Tom Zanussi
2009-11-30 7:18 ` [PATCH 2/4] perf trace/scripting: ignore shadowed variable warning for perf-trace-perl.c Tom Zanussi
2009-11-30 8:23 ` [tip:perf/scripting] perf trace/scripting: Ignore " tip-bot for Tom Zanussi
2009-11-30 7:18 ` [PATCH 3/4] perf trace/scripting: fix Perl common_* access functions Tom Zanussi
2009-11-30 8:24 ` [tip:perf/scripting] perf trace/scripting: Fix " tip-bot for Tom Zanussi
2009-11-30 7:18 ` [PATCH 4/4] perf trace/scripting: Add Fedora libperl install note to doc Tom Zanussi
2009-11-30 8:24 ` [tip:perf/scripting] " tip-bot for Tom Zanussi
2009-11-30 8:19 ` [PATCH 0/4] Fixes for perf/scripting Ingo Molnar
2009-12-01 5:30 ` Tom Zanussi
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.