The single-processor patchset #3 is now available.

Matt's notes on patchset #3:

This is the first stage Mutex patchset for FreeBSD-current. It is for SP (single-cpu) builds only. MP builds are currently broken and they are going to stay that way until Greg adds heavy-weight interrupt threads to the fray, because that's the only way we can turn GiantMutex into a blocking mutex in an MP system.

-Matt



This patch set will break MP builds, and it will break the alpha (since interrupt requirements have changed and machine-dependant code needs new functions). We will not be able to make MP builds work until Greg has got the heavy-weight interrupt threading in place and I rewrite the MP interrupt code (which is set of assembly files independant from the SP interrupt code). My part of it will take another weekend.

People using this patchset should do minimalist SP builds. I have tested it on an IDE and a SCSI box and it appears to work (read: not crash if I build a kernel on it).

There are lots of pieces missing, I probably missed some of the SPL code (that is, SPL code that runs outside of the GiantMutex. Stuff inside GiantMutex is just fine). But it's a good base to start with... it should be good enough for Greg to be able to start working on the interrupt threads.

I hacked the syscons spl's to pieces, they are almost certainly not completely correct but probably not any worse then they were before (all those spltty's were useless for the most part since SIO uses a fast interrupt which ignores cpl protection already).

I will put a document together on the web page describing the new calls.

This is a very rough patchset, it's going to take a lot of hands to smooth out. Remember that the goal of this patchset is to get most of the infrastructure in place so that others can start working on the system in parallel.

-Matt