v0.1.7 - More than enough threads
Pre-release
Pre-release
Changelogs
The original multithreading system, lateral::future, did not allow threads to yield during execution largely because of Rust's future model, and ran threads in order, completely synchronously. This has been changed to a new, custom-built solution called lateral::thread which allows threads to be run in the background on seperate physical CPU threads, and for threads to yield during execution. This allows patterns such as infinite loops and keyboard input to coexist. Internal thread spawning still remains present, and now allows threads to outlive the parent thread.
lateral::futurehas been removed.lateral::threadAdds the new thread model.lateral::thread::ps2Moves ps2 keyboard input to this new model.lateral::thread::queueIs a structure that allows spawning of internal threads.lateral::io::loggingAdds a format for fancy kernel logging.lateral::cpu::interruptWas changed to the new kernel logging system.lateral::cpu::gdtAdds a stack size parameter for threads.lateral::alloc::heapChanges the heap size from 100KiB to 10MBlateral(lib.rs) Adds the global thread queue, and a helpfulspawn_threadfunction.mainDemonstrates these changes.Cargo.tomlUpdates the version number.
Integrated Features
| Feature | Included |
|---|---|
| Asynchronous Interrupts | |
| Asynchronous Paging | |
| CPU Interrupts | |
| Embedded Modules | |
| Filesystem | |
| Global Allocator | |
| Heap Allocator | |
| Internal Multithreading | |
| Memory Paging | |
| QEMU Integration | |
| Serial Output | |
| VGA Output | |
| Video Display Adapter |