tech-kern archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: Interrupt flow in the NetBSD kernel
> On Jun 23, 2015, at 12:17 PM, Reinoud Zandijk <reinoud%NetBSD.org@localhost> wrote:
>
> Hi Matt,
>
> On Sun, Jun 21, 2015 at 01:42:38PM -0700, Matt Thomas wrote:
>>> On Jun 21, 2015, at 12:02 PM, Reinoud Zandijk <reinoud%NetBSD.org@localhost> wrote:
>>> On Sun, Jun 21, 2015 at 08:01:47AM -0700, Matt Thomas wrote:
>>>> IMO, softints are an abberation and should really be thread priorities
>>>> and dealt by the thread scheduler.
>>>
>>> Each level of softint as a kernel thread that gets woken up by condition
>>> variables?
>>
>> I envision them being hard realtime kernel threads that would preempt lower
>> priority threads.
>
> as in kernel priority threads that get sheduled immediately when they can?
> without preemption?
Yes. In theory it could be any thread but it they would most likely be
kernel threads.
>>> Could in a virtualisation context those threads also be used and be woken
>>> by signalling the relevant condition variable on reception of say an
>>> virtio push?
>>
>> Could be.
>>
>> But my goal is something intrinsically different. In the interrupt, you
>> signal a condition variable or some other method of making a thread
>> runnable. A run though the scheduler happens and new thread is selected to
>> run.
>>
>> In addition to exceptions and interrupts using a common trapframe,
>> cpu_switchto should also need to use a trapframe to store the lwp?s context.
>> When restoring a trapframe, switchto will need to know which type of
>> trapframe it was.
>>
>> When the interrupt is about to restore the trapframe, if the scheduler
>> decided to switch to another lwp, it will do so using that lwp?s trapframe.
>>
>> The goal is to have near instant context switching without the hackery of
>> the current preeemption code.
>
> This sounds good, esp. if that means we are leaving the concept of `interrupt
> context' other than the short time before it makes its handling thread
> runnable.
That’s my goal. Fast context switch would go away since it would no longer be
a special mechanism.
> Leaves us with inventarising and porting the drivers to use the new mechanism.
> Would maybe also be a good idea to clean up our forrest of primitives as so
> far they are still used.
We keep around too many kernel threads which are kept idle for most of the time.
Instead we should use a work-crew approach and select an idle worker to do a
task. When it’s done, it goes looking for some more work.
> How much time do you recon its going to take to do it properly? Could TNF be
> tempted to sponser someone, maybe you even ? :)
Depends on the port. I’ll probably use MIPS to test the initial work since
gxemul makes it easy to test on. I’d take money to work on this.
Home |
Main Index |
Thread Index |
Old Index