- 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.
This is a pretty big commit, so let's run through it in parts:
- All of the userspace changes are to switch away from syscall_wait
Mostly, this is to waitpid; some things were tweaked to do things
"properly" instead of waiting for particular processes. Init has
been fixed to do a proper spin wait.
- syscall_wait is gone - as are its uses. newlib bindings have been
using just waitpid for a while now.
- waitpid now performs like a Unix waitpid
- process reaping is no longer a "do this on next change thing":
it happens when a process is waited on, like it should
(That means we can have real zombies: terminated processes that
have not yet been waited on)
- Reparenting of children to init has been implemented, so you
can fork-daemonize!
Overall, this is pretty big... So I hope it doesn't break everything.