[Top][All Lists]

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

Re: Hurd SMP (lack of) progress report.

From: Erik Verbruggen
Subject: Re: Hurd SMP (lack of) progress report.
Date: Thu, 26 Apr 2001 12:49:59 +0200
User-agent: Mutt/1.2.5i

On Wed, Apr 25, 2001 at 09:18:12AM +0300, Ognyan Kulev wrote:

> I have an idea about using drivers with GNUMach:
> 1. There is a kernel compiled without ../configure options
> 2. There is a multi-boot module linux-drivers that contains all Linux 2.4
>    drivers.  Option `all' tries all drivers.  Option `ask' ask which drivers
>    to include like current Debian boot-floppies do.  Option 'driver[option
>    ...] driver[option ...] ...' loads these drivers with the options.  These
>    drivers are included in GNUMach address space dynamically (each driver
>    start at page boundary).
> This way there is no need to compile GNUMach again for each driver conflict.
> I'm not sure if a multiboot module can add pages to kernel address space and
> dynamically add drivers.

First a sidenote: GNUMach doesn't support more than one multiboot module

I thought about this a bit, and these are my ideas about drivers and
interrupt handling. The interrupt handling is (strongly?) inspired by
the L4 microkernel. In L4 a thread can be marked as interrupt thread. It
gets a special (short) IPC message on interrupt. In L4 a (interrupt)
thread is scheduled to run on IPC message delivery.  This way you can
have a thread living in userland handle the interrupt.

The same could be done in Mach.  The problem in Mach is the overhead. It
seems that passing IPC involves a lot of port-checking, which takes time
and is not necessary: a thread could be marked in a special way so the
only message it receives is a "interrupt occured". But I don't know if a
very simple IPC framework is available in Mach.

Another way is to modify the thread scheduler and make it schedule the
interrupt thread when an interrupt occurs. The problem here is a) to
prevent any scheduling during interrupt handling (does rescheduling only
occur on timer-interrupt?) and b) how the interrupt thread tells the
kernel "I'm done, do an sti() and make me sleep".

So could someone who has insight in the scheduling and/or IPC/port
handling of GNUMach shed light on this? (Roland?)


reply via email to

[Prev in Thread] Current Thread [Next in Thread]