tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Critical section



On Thu, Nov 27, 2014 at 1:38 AM, Matt Thomas <matt%3am-software.com@localhost> wrote:
> That is not true.  If the softint thread sleeps, control is returned back
> to the preempted lwp.

You're right.  I keep forgetting how softint works.  Sigh.

- Generic soft interrupt is implemented as kthread, and is not
preemptive.  No chance to be executed during critical sections.

- "Fast" soft interrupt is called from MD interrupt dispatch code,
that switches stack onto on per-CPU, per-interrupt-level pre-allocated
thread (LWP) to execute soft interrupts.

  - When these soft interrupts block and enter scheduler, the control
is directly back to the "interrupted" LWP.

  - Which means that "fast" soft interrupt precedes preemptiveness; MD
soft interrupt dispatcher ignores l_nopreempt.

(Calling "interrupted" threads as "preempted" threads is confusing.
It's a pity that these are called differently (l_switchto, pinned,
...).)


Home | Main Index | Thread Index | Old Index