Messages in this thread | | | Date | Tue, 4 Jun 2013 14:29:20 +0200 | From | Frederic Weisbecker <> | Subject | Re: [PATCH v2][RFC] tracing/context-tracking: Add preempt_schedule_context() for tracing |
| |
On Tue, Jun 04, 2013 at 08:16:29AM -0400, Steven Rostedt wrote: > On Tue, 2013-06-04 at 14:09 +0200, Frederic Weisbecker wrote: > > > > > +/** > > > + * preempt_schedule_context - preempt_schedule called by tracing > > > + * > > > + * The tracing infrastructure uses preempt_enable_notrace to prevent > > > + * recursion and tracing preempt enabling caused by the tracing > > > + * infrastructure itself. But as tracing can happen in areas coming > > > + * from userspace or just about to enter userspace, a preempt enable > > > + * can occur before user_exit() is called. This will cause the scheduler > > > + * to be called when the system is still in usermode. > > > + * > > > + * To prevent this, the preempt_enable_notrace will use this function > > > + * instead of preempt_schedule() to exit user context if needed before > > > + * calling the scheduler. > > > + */ > > > +void __sched notrace preempt_schedule_context(void) > > > +{ > > > + struct thread_info *ti = current_thread_info(); > > > + enum ctx_state prev_ctx; > > > + > > > + if (likely(ti->preempt_count || irqs_disabled())) > > > + return; > > > > or: > > if (!preemptible()) > > return; > > Sure, but this is a cut and paste from preempt_schedule(). If I make > that change here, I would want to make that there too. > > Peter, should I use !preemptible() or keep it like preempt_schedule() > and make a clean up change for 3.11?
That seem to indeed make sense to use it in preempt_schedule() as well.
| |