Messages in this thread | | | Date | Mon, 11 Jul 2011 22:07:53 +0100 | From | Will Deacon <> | Subject | Re: [PATCH 1/3] perf: add context field to perf_event |
| |
On Mon, Jul 04, 2011 at 03:36:57PM +0100, Frederic Weisbecker wrote: > On Mon, Jul 04, 2011 at 05:10:20PM +0300, Avi Kivity wrote: > > On 07/04/2011 04:58 PM, Frederic Weisbecker wrote: > > >Another thing I would like to do in the even longer term is to not use perf anymore > > >for ptrace breakpoints, because that involves a heavy dependency and few people are > > >happy with that. Instead we should just have a generic hook into the sched_switch() > > >and handle pure ptrace breakpoints there. The central breakpoint API would still be > > >there to reserve/schedule breakpoint resources between ptrace and perf. > > > > > > > 'struct preempt_notifier' may be the hook you're looking for. > > Yeah looks like a perfect fit as it's per task.
I had a quick look at this and I think the preempt_notifier stuff needs slightly extending so that we can register a notifier for a task other than current [e.g. the child of current on which we are installing breakpoints].
If the task in question is running, it looks like this will introduce a race condition between notifier registration and rescheduling. For the purposes of ptrace this shouldn't be a problem as the child will be stopped, but others might also want to make use of the new functionality.
Any ideas on how this could be achieved, or am I better off just restricting this to children that are being traced?
Cheers,
Will
| |