summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Smith <dsmith@redhat.com>2009-07-20 15:25:01 -0500
committerDavid Smith <dsmith@redhat.com>2009-07-20 15:25:01 -0500
commitc8a44dea9630e500f1eb44cb7934217fb2212f4e (patch)
treedfd55664328796a060bee36b79c127fb00c69eb0
parentc3d506aed4f651a98d1afde2fe700822edf9e78e (diff)
downloadsystemtap-steved-c8a44dea9630e500f1eb44cb7934217fb2212f4e.tar.gz
systemtap-steved-c8a44dea9630e500f1eb44cb7934217fb2212f4e.tar.xz
systemtap-steved-c8a44dea9630e500f1eb44cb7934217fb2212f4e.zip
Fixed PR 10386 by removing the need to convert a pid to a task.
* runtime/itrace.c (usr_itrace_init): Changed prototype to take a task_struct instead of a pid. * tapset-itrace.cxx (emit_module_decls): Updated usr_itrace_init() call. * runtime/autoconf-find-task-pid.c: Removed, since only user_itrace_init() was using it. * buildrun.cxx (compile_pass): Removed autoconf-find-task-pid.c test.
-rw-r--r--buildrun.cxx1
-rw-r--r--runtime/autoconf-find-task-pid.c6
-rw-r--r--runtime/itrace.c15
-rw-r--r--tapset-itrace.cxx2
4 files changed, 6 insertions, 18 deletions
diff --git a/buildrun.cxx b/buildrun.cxx
index 7bcdcf8d..5967066e 100644
--- a/buildrun.cxx
+++ b/buildrun.cxx
@@ -158,7 +158,6 @@ compile_pass (systemtap_session& s)
output_autoconf(s, o, "autoconf-vm-area.c", "STAPCONF_VM_AREA", NULL);
output_autoconf(s, o, "autoconf-procfs-owner.c", "STAPCONF_PROCFS_OWNER", NULL);
output_autoconf(s, o, "autoconf-alloc-percpu-align.c", "STAPCONF_ALLOC_PERCPU_ALIGN", NULL);
- output_autoconf(s, o, "autoconf-find-task-pid.c", "STAPCONF_FIND_TASK_PID", NULL);
output_autoconf(s, o, "autoconf-x86-gs.c", "STAPCONF_X86_GS", NULL);
#if 0
diff --git a/runtime/autoconf-find-task-pid.c b/runtime/autoconf-find-task-pid.c
deleted file mode 100644
index 549d5ac3..00000000
--- a/runtime/autoconf-find-task-pid.c
+++ /dev/null
@@ -1,6 +0,0 @@
-#include <linux/sched.h>
-
-void foo (pid_t k) {
- struct task_struct *tsk = find_task_by_pid (k);
- (void) tsk;
-}
diff --git a/runtime/itrace.c b/runtime/itrace.c
index 3014f9e5..6fe39db4 100644
--- a/runtime/itrace.c
+++ b/runtime/itrace.c
@@ -324,20 +324,14 @@ done:
}
-static int usr_itrace_init(int single_step, pid_t tid, struct stap_itrace_probe *p)
+static int usr_itrace_init(int single_step, struct task_struct *tsk, struct stap_itrace_probe *p)
{
struct itrace_info *ui;
- struct task_struct *tsk;
spin_lock_init(&itrace_lock);
rcu_read_lock();
-#ifdef STAPCONF_FIND_TASK_PID
- tsk = find_task_by_pid(tid);
-#else
- tsk = find_task_by_vpid(tid);
-#endif
- if (!tsk) {
- printk(KERN_ERR "usr_itrace_init: Cannot find process %d\n", tid);
+ if (tsk == NULL) {
+ printk(KERN_ERR "usr_itrace_init: Invalid task\n");
rcu_read_unlock();
return 1;
}
@@ -353,7 +347,8 @@ static int usr_itrace_init(int single_step, pid_t tid, struct stap_itrace_probe
rcu_read_unlock();
if (debug)
- printk(KERN_INFO "usr_itrace_init: completed for tid = %d\n", tid);
+ printk(KERN_INFO "usr_itrace_init: completed for tid = %d\n",
+ tsk->pid);
return 0;
}
diff --git a/tapset-itrace.cxx b/tapset-itrace.cxx
index ebfa57ac..87845155 100644
--- a/tapset-itrace.cxx
+++ b/tapset-itrace.cxx
@@ -208,7 +208,7 @@ itrace_derived_probe_group::emit_module_decls (systemtap_session& s)
s.op->newline() << "if (register_p) ";
s.op->indent(1);
- s.op->newline() << "rc = usr_itrace_init(p->single_step, tsk->pid, p);";
+ s.op->newline() << "rc = usr_itrace_init(p->single_step, tsk, p);";
s.op->newline(-1) << "else";
s.op->newline(1) << "remove_usr_itrace_info(find_itrace_info(p->tgt.pid));";
s.op->newline(-1) << "return rc;";