| Date | Fri, 31 Aug 2012 12:13:21 -0700 | From | Josh Triplett <> | Subject | Re: [PATCH tip/core/rcu 02/26] rcu: New rcu_user_enter_irq() and rcu_user_exit_irq() APIs |
| |
On Thu, Aug 30, 2012 at 02:05:19PM -0700, Paul E. McKenney wrote: > From: Frederic Weisbecker <fweisbec@gmail.com> > > In some cases, it is necessary to enter or exit userspace-RCU-idle mode > from an interrupt handler, for example, if some other CPU sends this > CPU a resched IPI. In this case, the current CPU would enter the IPI > handler in userspace-RCU-idle mode, but would need to exit the IPI handler > after having exited that mode. > > To allow this to work, this commit adds two new APIs to TREE_RCU: > > - rcu_user_enter_irq(). This must be called from an interrupt between > rcu_irq_enter() and rcu_irq_exit(). After the irq calls rcu_irq_exit(), > the irq handler will return into an RCU extended quiescent state. > In theory, this interrupt is never a nested interrupt, but in practice > it might interrupt softirq, which looks to RCU like a nested interrupt. > > - rcu_user_exit_irq(). This must be called from a non-nesting > interrupt, interrupting an RCU extended quiescent state, also > between rcu_irq_enter() and rcu_irq_exit(). After the irq calls > rcu_irq_exit(), the irq handler will return in an RCU non-quiescent > state.
These names seem a bit confusing. From the descriptions, it sounds like you don't always need to pair them; rcu_irq_exit() will return to a non-quiescent state, unless you call rcu_user_enter_irq and *don't* call rcu_user_exit_irq. Did I get that semantic right?
Given that, the "enter" and "exit" names seem confusing. This seems more like a flag you can set and clear, rather than a delimited region as suggested by an enter/exit pair.
How about something vaguely like rcu_user_irq_set_eqs and rcu_user_irq_clear_eqs?
- Josh Triplett
|