Re: [PATCH 01/23] tracehook: add linux/tracehook.h

Petr Tesarik
2008-07-17T11:07:06Z

On Thu, 2008-07-17 at 12:48 +0400, Alexey Dobriyan wrote:
> On Thu, Jul 17, 2008 at 12:27:55AM -0700, Roland McGrath wrote:
> > The aim is to formalize and consolidate all the places that the core
> > kernel code and the arch code now ties into the ptrace implementation.
> >
> > These patches mostly don't cause any functional change. They just
> > move the details of ptrace logic out of core code into tracehook.h
> > inlines, where they are mostly compiled away to the same as before.
>
> > All that changes is that everything is thoroughly documented
>
> This is fine.
>
> > and any future reworking of ptrace, or addition of something new,
> > would not have to touch core code all over, just change the tracehook.h
> > inlines.
>
> And this is suprising wish given one can't predict how exactly those
> "future reworking" will look like.
>
> > The new linux/ptrace.h inlines are used by the following patches in the
> > new tracehook_*() inlines. Using these helpers for the ptrace event
> > stops makes it simple to change or disable the old ptrace implementation
> > of these stops conditionally later.
>
> Call them "utrace_*" from the start?

Ah, maybe justified, because I don't expect any other re-implementation
of the same after utrace is finished, but -- there's still the old
ptrace implementation, so _not_ mentioning utrace seems a bit better to
me.

> > --- a/include/linux/ptrace.h
> > +++ b/include/linux/ptrace.h
> > @@ -121,6 +121,39 @@ static inline void ptrace_unlink(struct task_struct *child)
> > int generic_ptrace_peekdata(struct task_struct *tsk, long addr, long data);
> > int generic_ptrace_pokedata(struct task_struct *tsk, long addr, long data);
> >
> > +/**
> > + * task_ptrace - return %PT_* flags that apply to a task
> > + * @task: pointer to &task_struct in question
> > + *
> > + * Returns the %PT_* flags that apply to @task.
> > + */
> > +static inline int task_ptrace(struct task_struct *task)
> > +{
> > + return task->ptrace;
> > +}
>
> Pointless 1:1 wrapper unless you're going to #ifdef ->ptrace later.

And that's exactly what's going to happen. Look at Roland's git. ;)

Petr