Re: Q: utrace_reset() UTRACE_EVENT(REAP)

2009-03-18 Thread Oleg Nesterov
On 03/18, Roland McGrath wrote: Yes, but the other side lacks a barrier. UTRACE_REPORT does utrace-report = 1; wmb(); // actually mb, but wmb is enough set _TIF_NOTIFY_RESUME; do_notify_resume()-utrace_resume()-start_report() path does if (_TIF_NOTIFY_RESUME)

Re: Q: utrace_reset() UTRACE_EVENT(REAP)

2009-03-13 Thread Oleg Nesterov
On 03/12, Roland McGrath wrote: So I think we need this: @@ -181,7 +181,13 @@ static int utrace_add_engine(struct task_struct *target, * also set. Otherwise utrace_control() or utrace_do_stop() * might skip setting TIF_NOTIFY_RESUME upon seeing -report

Re: Q: utrace_reset() UTRACE_EVENT(REAP)

2009-03-12 Thread Oleg Nesterov
I'm afraid I wasn't clear again, On 03/12, Oleg Nesterov wrote: Oh. utrace_attach_task()-utrace_add_engine() sets -report + TIF_NOTIFY_RESUME. But tracehook_notify_resume() does nothing because -utrace_flags == 0 ? Confused. Perhaps this is not problem per se. But let's suppose we call,

Re: Q: utrace_reset() UTRACE_EVENT(REAP)

2009-03-12 Thread Roland McGrath
Hmm. But this leads to another question: why does utrace_reset() set UTRACE_EVENT(REAP) ? This looks as: make sure -utrace_flags is never 0 unless we detach all engines. Perhaps because sometimes, say tracehook_notify_resume(), we just check task_utrace_flags() != 0 ? Right, it's an