We only support 4 total chain entries at the moment, but that can be
"easily expanded"... We don't really have a lite dynamic vector, just
the big fat dynamic lists, so improving on this needs some extra effort.
This commit also drags in a bunch of random network work by necessity.
The previous method was failing to actually mix the samples as signed
16-bit values and just adding the individual bytes. This works out fine
for single buffers but creates weird artifacting if multiple buffers are
being mixed and there is a carry between the bytes.
This doesn't include a userland interface, but it does include a couple
of commands for the debug shell. ac97_status, which shows some register
and port values for the ac97 and ac97_noise which attempts to play a
(very annoying) 440Hz sine wave through the sound card.
- The kernel version has been bumped to 0.9.0
- The timer resolution in the kernel has been increased to millseconds.
- The preemptive scheduling interval has been descreased to one
millisecond.
- Relative sleep continues to use 10 millsecond intervals for legacy
reasons.
- `gettimeofday` now uses the internal tick counter to calculate the
current time. Drift is calculated from the CMOS every 5 seconds and
applies only to `gettimeofday` and other places that use it.
- The resolution of timing information provided by debug functions has
been increased to three digits (milliseconds).
- The resolution of timing information provided by the procfs uptime
virtual file has been increased to three digits (milliseconds).
- Functions have been added to the debug shell to read the TSC. The TSC
is not used in timing functions at this time.