I'll be posting updated materials in the first day or two. But there is one more change which I think deserves special notion.
In order to facilitate greater fidelity in our implementation of the OSS APIs, we have converted the Boomer core to use normal character device interfaces for the OSS device nodes. Sun audio(7i) style nodes are still based on STREAMs. The astute will note that Solaris can't have both STREAMs nodes and character nodes on the same driver (you only get one cb_ops per driver.) The solution Boomer has taken to this problem is to use a thin-layer pseudo driver (austr) to provide the STREAMs minor nodes. Internally, LDI open & close are used to make sure the DDI reference counts are accurate, but all data transfer uses a fast & light weight function call mechanism, so there should not be any performance penalty. The reason for this change is to eliminate extra overhead & latency associated with STREAMs, and to eliminate ambiguity that was resulting from the fact that the OSS API has no way to express the details of the queuing that was being added by the STREAMs layer. Upshot of this is of course faster, lower overhead for OSS applications, and *much* more accurate reporting of latency and positioning details. (At the moment the accuracy of sample position reporting is limited only to two things: the accuracy of system clock and the physical device's ability to report its sampling position. Most devices have a 64-byte internal FIFO without any ability to introspect into them, so that will tend to be the approximate error for these devices. For a typical device running at 16-bit stereo 48kHz, that corresponds to an error of approximately 320 usec, which should be *plenty* accurate enough for reasonable uses.) -- Garrett