(textually depends on signals-tracehook_notify_jctl-change.patch)
Introduce the empty inline tracehook_finish_jctl() helper called by
do_signal_stop() after wakeup.
Currently we lack the ability to report this state change.
Also fix the comment, it should be placed before schedule().
Signed-off-by: Oleg Nesterov <[email protected]>
---
include/linux/tracehook.h | 9 +++++++++
kernel/signal.c | 2 ++
2 files changed, 11 insertions(+)
--- __UTRACE/include/linux/tracehook.h~2_FINISH_JCTL 2009-07-29 03:10:10.000000000 +0200
+++ __UTRACE/include/linux/tracehook.h 2009-07-29 03:51:42.000000000 +0200
@@ -521,6 +521,15 @@ static inline int tracehook_notify_jctl(
return notify ?: (current->ptrace & PT_PTRACED) ? why : 0;
}
+/**
+ * tracehook_finish_jctl - report about return from job control stop
+ *
+ * This is called by do_signal_stop() after wakeup.
+ */
+static inline void tracehook_finish_jctl(void)
+{
+}
+
#define DEATH_REAP -1
#define DEATH_DELAYED_GROUP_LEADER -2
--- __UTRACE/kernel/signal.c~2_FINISH_JCTL 2009-07-29 03:17:49.000000000 +0200
+++ __UTRACE/kernel/signal.c 2009-07-29 03:57:07.000000000 +0200
@@ -1735,12 +1735,12 @@ static int do_signal_stop(int signr)
read_unlock(&tasklist_lock);
}
+ /* Now we don't run again until woken by SIGCONT or SIGKILL */
do {
schedule();
} while (try_to_freeze());
- /*
- * Now we don't run again until continued.
- */
+
+ tracehook_finish_jctl();
current->exit_code = 0;
return 1;
Acked-by: Roland McGrath <[email protected]>
On Wed, 29 Jul 2009 04:01:40 +0200
Oleg Nesterov <[email protected]> wrote:
> (textually depends on signals-tracehook_notify_jctl-change.patch)
>
> Introduce the empty inline tracehook_finish_jctl() helper called by
> do_signal_stop() after wakeup.
>
> Currently we lack the ability to report this state change.
>
> Also fix the comment, it should be placed before schedule().
>
> Signed-off-by: Oleg Nesterov <[email protected]>
> ---
>
> include/linux/tracehook.h | 9 +++++++++
> kernel/signal.c | 2 ++
> 2 files changed, 11 insertions(+)
>
> --- __UTRACE/include/linux/tracehook.h~2_FINISH_JCTL 2009-07-29 03:10:10.000000000 +0200
> +++ __UTRACE/include/linux/tracehook.h 2009-07-29 03:51:42.000000000 +0200
> @@ -521,6 +521,15 @@ static inline int tracehook_notify_jctl(
> return notify ?: (current->ptrace & PT_PTRACED) ? why : 0;
> }
>
> +/**
> + * tracehook_finish_jctl - report about return from job control stop
> + *
> + * This is called by do_signal_stop() after wakeup.
> + */
> +static inline void tracehook_finish_jctl(void)
> +{
> +}
> +
> #define DEATH_REAP -1
> #define DEATH_DELAYED_GROUP_LEADER -2
>
> --- __UTRACE/kernel/signal.c~2_FINISH_JCTL 2009-07-29 03:17:49.000000000 +0200
> +++ __UTRACE/kernel/signal.c 2009-07-29 03:57:07.000000000 +0200
> @@ -1735,12 +1735,12 @@ static int do_signal_stop(int signr)
> read_unlock(&tasklist_lock);
> }
>
> + /* Now we don't run again until woken by SIGCONT or SIGKILL */
> do {
> schedule();
> } while (try_to_freeze());
> - /*
> - * Now we don't run again until continued.
> - */
> +
> + tracehook_finish_jctl();
> current->exit_code = 0;
>
Confused. This patch has no effect.
On 07/29, Andrew Morton wrote:
>
> On Wed, 29 Jul 2009 04:01:40 +0200
> Oleg Nesterov <[email protected]> wrote:
>
> > +static inline void tracehook_finish_jctl(void)
> > +{
> > +}
> > +
> > #define DEATH_REAP -1
> > #define DEATH_DELAYED_GROUP_LEADER -2
> >
> > --- __UTRACE/kernel/signal.c~2_FINISH_JCTL 2009-07-29 03:17:49.000000000 +0200
> > +++ __UTRACE/kernel/signal.c 2009-07-29 03:57:07.000000000 +0200
> > @@ -1735,12 +1735,12 @@ static int do_signal_stop(int signr)
> > read_unlock(&tasklist_lock);
> > }
> >
> > + /* Now we don't run again until woken by SIGCONT or SIGKILL */
> > do {
> > schedule();
> > } while (try_to_freeze());
> > - /*
> > - * Now we don't run again until continued.
> > - */
> > +
> > + tracehook_finish_jctl();
> > current->exit_code = 0;
> >
>
> Confused. This patch has no effect.
Yes, currently tracehook_finish_jctl() does nothing. This patch is
needed to add the functional changes later, without touching the code
outside of tracehook/etc. It is like tracehook_notify_resume() which
does nothing until we add the real tracing.
Oleg.