This is the mail archive of the systemtap@sourceware.org mailing list for the systemtap project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: discussion about registering task_finder in user space probing


Hi Mark,

Thanks for your reply.

Mark Wielaard wrote:
Hi Wenji,

On Tue, 2009-03-24 at 17:06 +0800, Wenji Huang wrote:
I found our task_finder embedded in each stap_uprob_spec even it is same. That will cause many times registering similar task_finder.
[...]
for (i=0; i<220; i++) {
struct stap_uprobe_spec *sups = & stap_uprobe_specs[i];
probe_point = sups->pp;
if (sups->finder.pathname) sups->finder.callback = & stap_uprobe_process_found;
else if (sups->pathname) sups->finder.vm_callback = & stap_uprobe_vmchange_found;
rc = stap_register_task_finder_target (& sups->finder);
if (rc) break;
}
[snip]


So we will have 220 times registering similar task_finder. I think
the probe point is irrelevant to task_finder. Can we just keep only one and invoke callbacks to register all the stap_uprobes[i] once interested process found?

I was just looking at this since I am doing something similar on the pr6866 branch (not just for uprobes, but also for utrace and itrace probes). My idea was to have stap_register_task_finder_target () recognize when the callback is already registered for that particular pathname/pid. stap_register_task_finder_target () already avoids duplication when it sees an existing entry for pathname/pid. So where
Yes, it will search the existing entry before adding entry to list.

there is now a

    // Add this target to the callback list for this task.
    list_add_tail(&new_tgt->callback_list, &tgt->callback_list_head);

We could do a lookup of whether the callback is already in the list and
only add it when it isn't already there. What do you think?

Sounds good. Current code is harmless, but it's better if we could make it more graceful.


Regards,
Wenji


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]