From 81c361887ec0a5cfd9bdb635b999b590cb7b57f7 Mon Sep 17 00:00:00 2001 From: David Smith Date: Tue, 17 Jun 2008 09:19:24 -0500 Subject: [PATCH] Got smarter on which utrace events to set on a newly found thread. 2008-06-17 David Smith * task_finder.c (__stp_utrace_attach_match_filename): Uses new __STP_ATTACHED_TASK_EVENTS macro to determine which events to set on a newly found process based on whether the stap_task_finder_target structure has a vm_callback defined. (stap_start_task_finder): Ditto. --- runtime/ChangeLog | 8 ++++++++ runtime/task_finder.c | 10 +++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/runtime/ChangeLog b/runtime/ChangeLog index ca7bf0820..4e156f163 100644 --- a/runtime/ChangeLog +++ b/runtime/ChangeLog @@ -1,3 +1,11 @@ +2008-06-17 David Smith + + * task_finder.c (__stp_utrace_attach_match_filename): Uses new + __STP_ATTACHED_TASK_EVENTS macro to determine which events to set + on a newly found process based on whether the + stap_task_finder_target structure has a vm_callback defined. + (stap_start_task_finder): Ditto. + 2008-06-16 David Smith * task_finder.c (stap_start_task_finder): Improved callback diff --git a/runtime/task_finder.c b/runtime/task_finder.c index e853cb2a4..7391f1045 100644 --- a/runtime/task_finder.c +++ b/runtime/task_finder.c @@ -224,10 +224,14 @@ __stp_get_mm_path(struct mm_struct *mm, char *buf, int buflen) #define __STP_ATTACHED_TASK_BASE_EVENTS (UTRACE_EVENT(DEATH)) -#define __STP_ATTACHED_TASK_EVENTS (__STP_ATTACHED_TASK_BASE_EVENTS \ +#define __STP_ATTACHED_TASK_VM_EVENTS (__STP_ATTACHED_TASK_BASE_EVENTS \ | UTRACE_ACTION_QUIESCE \ | UTRACE_EVENT(QUIESCE)) +#define __STP_ATTACHED_TASK_EVENTS(tgt) \ + ((((tgt)->vm_callback) == NULL) ? __STP_ATTACHED_TASK_BASE_EVENTS \ + : __STP_ATTACHED_TASK_VM_EVENTS) + static int stap_utrace_attach(struct task_struct *tsk, const struct utrace_engine_ops *ops, void *data, @@ -317,7 +321,7 @@ __stp_utrace_attach_match_filename(struct task_struct *tsk, if (register_p) { rc = stap_utrace_attach(tsk, &cb_tgt->ops, cb_tgt, - __STP_ATTACHED_TASK_EVENTS); + __STP_ATTACHED_TASK_EVENTS(cb_tgt)); if (rc != 0 && rc != EPERM) break; cb_tgt->engine_attached = 1; @@ -674,7 +678,7 @@ stap_start_task_finder(void) // Set up events we need for attached tasks. rc = stap_utrace_attach(tsk, &cb_tgt->ops, cb_tgt, - __STP_ATTACHED_TASK_EVENTS); + __STP_ATTACHED_TASK_EVENTS(cb_tgt)); if (rc != 0 && rc != EPERM) goto stf_err; cb_tgt->engine_attached = 1; -- 2.43.5