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

Alexey Dobriyan
2008-07-17T08:51:17Z

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?

> --- 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.