Although I like the basic idea of the WTD model (despite it seeming
very similar to the tasklet system already in place), I don't think it
makes the latency issue moot. Let me give you one simple example why:
>struct _WTD {
> struct _WTD *next;
> struct _WTD *prior;
> ULONG (*function)(struct _WTD *wtd);
> void *context;
> ULONG flags;
> BYTE *data;
>} WTD;
struct WTD foo;
ULONG cycle_burner (WTD *wtd)
{
int i;
for (i = 0; i < 100000000; i++) {
blah;
}
}
foo.function = cycle_burner;
Now, one would certainly hope that nobody would write such code, but
then, one would have hoped that nobody would write the kind of stuff
that is in fbcon or the vt code (interrupt disabling for up to 1second
and 200ms, according to reports on this list).
To make latency "moot" you have to do two things:
1) fix the code paths in the existing kernel so that they get to a
reschedule point within a reasonably defined period of time
2) create a "culture" to make it likely that new code follows the
same model.
(2) doesn't always work - I know, for example, that there is a
joystick driver for BeOS that destroys all of its low-latency
performance, despite the rest of the coding of the rest of their kernel.
--p
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/