diff options
author | Frank Ch. Eigler <fche@elastic.org> | 2009-06-13 18:21:06 -0400 |
---|---|---|
committer | Frank Ch. Eigler <fche@elastic.org> | 2009-06-13 18:21:06 -0400 |
commit | f07c3b680a722e27ed55bb5c9719fa5827ebfc75 (patch) | |
tree | a109e4a1fbae2b84ce8e8fa3724d97298a124012 | |
parent | b818f048bb5edca2bde3b33fdbe7e42451eb3c6e (diff) | |
download | systemtap-steved-f07c3b680a722e27ed55bb5c9719fa5827ebfc75.tar.gz systemtap-steved-f07c3b680a722e27ed55bb5c9719fa5827ebfc75.tar.xz systemtap-steved-f07c3b680a722e27ed55bb5c9719fa5827ebfc75.zip |
PR10279: add -DKRETACTIVE=nnnn parameter
* tapsets.cxx (dwarf/kprobe_derived_...::emit_decl/init): Define
and use KRETPROBE instead of hard-coded max(...) values. Raise
the default 50%.
* testsuite/buildok/thirtytwo.stp: New test.
-rw-r--r-- | NEWS | 5 | ||||
-rw-r--r-- | tapsets.cxx | 12 | ||||
-rwxr-xr-x | testsuite/buildok/thirtytwo.stp | 10 |
3 files changed, 25 insertions, 2 deletions
@@ -1,3 +1,8 @@ +* What's new + +- Systemwide kernel .function.return (kretprobe) maxactive defaults may + be overridden with the -DKRETACTIVE=nnn parameter. + * What's new in version 0.9.8 - Miscellaneous new tapset functions: diff --git a/tapsets.cxx b/tapsets.cxx index 3ecf2250..0707e052 100644 --- a/tapsets.cxx +++ b/tapsets.cxx @@ -2902,6 +2902,10 @@ dwarf_derived_probe_group::emit_module_decls (systemtap_session& s) s.op->newline() << "#endif"; s.op->newline(); + s.op->newline() << "#ifndef KRETACTIVE"; + s.op->newline() << "#define KRETACTIVE (max(15,6*NR_CPUS))"; + s.op->newline() << "#endif"; + // Forward declare the master entry functions s.op->newline() << "static int enter_kprobe_probe (struct kprobe *inst,"; s.op->line() << " struct pt_regs *regs);"; @@ -3060,7 +3064,7 @@ dwarf_derived_probe_group::emit_module_init (systemtap_session& s) s.op->newline() << "if (sdp->maxactive_p) {"; s.op->newline(1) << "kp->u.krp.maxactive = sdp->maxactive_val;"; s.op->newline(-1) << "} else {"; - s.op->newline(1) << "kp->u.krp.maxactive = max(10, 4*NR_CPUS);"; + s.op->newline(1) << "kp->u.krp.maxactive = KRETACTIVE;"; s.op->newline(-1) << "}"; s.op->newline() << "kp->u.krp.handler = &enter_kretprobe_probe;"; // to ensure safeness of bspcache, always use aggr_kprobe on ia64 @@ -4550,6 +4554,10 @@ kprobe_derived_probe_group::emit_module_decls (systemtap_session& s) s.op->newline() << "#endif"; s.op->newline(); + s.op->newline() << "#ifndef KRETACTIVE"; + s.op->newline() << "#define KRETACTIVE (max(15,6*NR_CPUS))"; + s.op->newline() << "#endif"; + // Forward declare the master entry functions s.op->newline() << "static int enter_kprobe2_probe (struct kprobe *inst,"; s.op->line() << " struct pt_regs *regs);"; @@ -4695,7 +4703,7 @@ kprobe_derived_probe_group::emit_module_init (systemtap_session& s) s.op->newline() << "if (sdp->maxactive_p) {"; s.op->newline(1) << "kp->u.krp.maxactive = sdp->maxactive_val;"; s.op->newline(-1) << "} else {"; - s.op->newline(1) << "kp->u.krp.maxactive = max(10, 4*NR_CPUS);"; + s.op->newline(1) << "kp->u.krp.maxactive = KRETACTIVE;"; s.op->newline(-1) << "}"; s.op->newline() << "kp->u.krp.handler = &enter_kretprobe2_probe;"; // to ensure safeness of bspcache, always use aggr_kprobe on ia64 diff --git a/testsuite/buildok/thirtytwo.stp b/testsuite/buildok/thirtytwo.stp new file mode 100755 index 00000000..d97aa50b --- /dev/null +++ b/testsuite/buildok/thirtytwo.stp @@ -0,0 +1,10 @@ +#! /bin/sh + +stap -t -p4 -DKRETACTIVE=8888 -e ' +probe kprobe.function("sys_open").return {} +probe kprobe.function("sys_open").return.maxactive(100) {} +probe kernel.function("sys_open").return {} +probe kernel.function("sys_open").return.maxactive(100) {} +probe syscall.*.return {} +' + |