Skip to content

v0.1.7 - More than enough threads

Pre-release
Pre-release

Choose a tag to compare

@carterisonline carterisonline released this 16 Jul 17:56

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::future has been removed.
  • lateral::thread Adds the new thread model.
  • lateral::thread::ps2 Moves ps2 keyboard input to this new model.
  • lateral::thread::queue Is a structure that allows spawning of internal threads.
  • lateral::io::logging Adds a format for fancy kernel logging.
  • lateral::cpu::interrupt Was changed to the new kernel logging system.
  • lateral::cpu::gdt Adds a stack size parameter for threads.
  • lateral::alloc::heap Changes the heap size from 100KiB to 10MB
  • lateral (lib.rs) Adds the global thread queue, and a helpful spawn_thread function.
  • main Demonstrates these changes.
  • Cargo.toml Updates 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