47 lines
2.2 KiB
Markdown
Executable File
47 lines
2.2 KiB
Markdown
Executable File
Changes
|
|
======================================
|
|
- Removed the Input.h/Input.cc files
|
|
- Removed the Queue.h/Queue.cc/Chain.h files
|
|
- Many changes to the scheduler (strategy is still round robin):
|
|
- Merged dispatcher into the scheduler (removed Dispatch.h/Dispatch.cc)
|
|
- Scheduler no longer uses queue but vector
|
|
- Scheduler owns threads (no outside references)
|
|
- Threads are addressed by tid from the outside
|
|
- Retrieve threads when killing them
|
|
- Threads are deallocated when killed and not retrieved
|
|
- Scheduler manages blocked threads
|
|
- Simplified thread switching by storing registers on the stack (removed ThreadState.h, Thread.inc)
|
|
|
|
Additions
|
|
======================================
|
|
- Some stream manipulators for CGA_Stream (color) and OutStream (fixed width)
|
|
- Logging with serial port output
|
|
- Main menu to start demos
|
|
- A very basic system to broadcast keyboard events to threads
|
|
- Basic vector and iterator
|
|
- Basic unique_ptr
|
|
- Basic fixed size array (just a wrapper for C-style arrays)
|
|
- Basic dynamic string (heap allocated)
|
|
- Basic span
|
|
|
|
Bugs
|
|
======================================
|
|
- Can't exit the PCSPKdemo (bluescreen)
|
|
- After exiting the VBEdemo the paging isn't reactivated (so the pagefault bluescreen no longer works)
|
|
- The PreemptiveThreadDemo LoopThreads can't be exited, the demo can't be launched multiple times
|
|
- Tree Allocator (uses a red black tree to find best-fit blocks) crashes when freelist root is removed
|
|
- Can't restart the OS (bluescreen)
|
|
- Fast keyboard inputs sometimes trigger bluescreens
|
|
- Different combinations of demos also trigger bluescreens
|
|
- Other seemingly random bluescreens that are hard to pinpoint
|
|
- Key event management doesn't differentiate between press/type/release etc.
|
|
- Main menu doesn't work with multiple inputs (like holding a key)
|
|
|
|
Other
|
|
======================================
|
|
- Keyboard repeat rate and led functionality is missing
|
|
- Circle functionality in VESA mode is missing
|
|
- Singleton can't have a destructor, as C++ doesn't know how to deinitialize them after program exit.
|
|
This happens because we compile with very limited libraries so "atexit" to register destructors is missing.
|
|
I wanted to make the device/hardware classes (PCSPK, CPU etc) singleton because it doesn't make sense to have more than one.
|