Subject: Re: Topic suggestions related to NetBSD for a doctoral thesis?
To: Dieter <netbsd@sopwith.solgatos.com>
From: Mike Cheponis <mac@Wireless.Com>
List: netbsd-advocacy
Date: 11/30/2004 06:56:15
On Mon, 29 Nov 2004, Dieter wrote:

> Adding "real time" support?

This is by no means trivial.

In the 80s I added real-time support to 4.1, 4.2, and 4.3 BSD.  It involved
using an external interrupt source into the VAX-11/780 (KW-11P to be precise)
and fielding that interrupt as fast as possible, doing the realtime in the
KW-11P driver itself (it was not dynamically loaded/linked), and mapping some data
collection areas in the kernel space into user space.

The biggest trick was tracking down chunks of the kernel that locked out
interrupts for long amounts of time, and then reverse-engineering _why_ such
big chunks were locked down.

Turns out, there wasn't much discipline there, it was easiest to just "DI" and
mess with kernel data structures then "EI" when finished, without being too
particular.

FWIW, we (the Leg Lab at CMU and later MIT) achieved in the 10s of microseconds
(max) response times, with a 1 kHz interrupt rate, on a VAX-11/780, and UNIX was
still running!  (more slowly, of course, but we did not bring down timesharing
and run the robotics experiment... it was real time _underneath_ BSD.)


-Mike