diff --git a/README.md b/README.md index e8ad5e2..ce77a5e 100755 --- a/README.md +++ b/README.md @@ -9,11 +9,11 @@ Changes - Removed the Input.h/Input.cc files - Made device classes singletons - Changed the multitasking assembly (use stack instead of thread_state) -- Extensive changes to the scheduling: +- Many changes to the scheduler (strategy is still round robin): - Merged dispatcher into the scheduler - Scheduler no longer uses queue but vector - - Scheduler owns threads - - Threads are addressed by tid + - Scheduler owns threads (no outside references) + - Threads are addressed by tid from the outside - Threads are deallocated automatically when killed/exited - Retrieve threads from the scheduler without deallocation - Scheduler manages blocked threads @@ -22,14 +22,14 @@ Additions ====================================== - Some stream manipulators for CGA_Stream (color) and OutStream (fixed width) - Logging class with support for colored serial port output -- Main menu to start demo +- Main menu to start demos - A very basic system to broadcast keyboard events to threads - Basic implementation of vector with iterator support - Basic implementation of unique_ptr -- Basic implementation of fixed size array +- Basic implementation of fixed size array (just a wrapper for C-style arrays) Bugs ====================================== -- Can't exit the PCSPKdemo +- Can't exit the PCSPKdemo (bluescreen) - Random bluescreens that are hard to pinpoint - Tree Allocator (uses a red black tree to find best-fit blocks) crashes when freelist root is removed diff --git a/c_os/Makefile b/c_os/Makefile index 78d4bba..d5a97f3 100755 --- a/c_os/Makefile +++ b/c_os/Makefile @@ -74,22 +74,21 @@ CXX ?= g++ # CC = clang # CXX = clang++ -# Separate these as they are not compatible with clang14 EMPTY := GCC = gcc ifeq ($(CXX),$(GCC)) +# Separate these as they are not compatible with clang14 EXTRAFLAGS = -mmanual-endbr -mpreferred-stack-boundary=2 else EXTRAFLAGS = $(EMPTY) endif -# NOTE: In some cases I needed O1/O0 to allow paging/bluescreen to work (We need the ebp on the stack) -# I don't know why but right now it works with O2 +# NOTE: Need -O0 to allow paging/bluescreen to work (We need the ebp on the stack) CFLAGS := $(CFLAGS) -O0 -m32 -march=i486 -Wall -fno-stack-protector -nostdlib -I. -g -ffreestanding -fno-pie -fno-pic -Wno-write-strings -mno-sse -mno-sse2 $(EXTRAFLAGS) -# I added -std=c++17 for if constexpr, but it isn't necessary for anything critical (I think?) -# -std=c++20 is needed for template concepts and optional references, but we don't have it available :( +# NOTE: -std=c++17 for if constexpr and probably some other stuff +# -std=c++20 is needed for template concepts and optional references, but we don't have it available :( CXXFLAGS := $(CFLAGS) -Wno-non-virtual-dtor -fno-threadsafe-statics -fno-use-cxa-atexit -fno-rtti -fno-exceptions -std=c++17 BOOT = ../boot