This is a very old project of mine inadvertently developed by the first principle of undefined behaviour not being a bug, but a feature. Needless to say it didn't work then on higher optimization settings and it certainly does not now.
Lizarx will be an portable Unix-like Microkernel. The OS will also use dynamic linked shared objects to minimize Overhead between different Userspace Drivers, which are BTW written in C++.
./build.sh # builds Lizarx with toolchain(use this, when building the first time)
./build.sh --no-toolchain # builds Lizarx without toolchain(use this, when you made small changes outside the toolchain )
./build.sh --arch-x86_64 # builds Lizarx with toolchain for x86_64 target(use this, when building the first time)
./build.sh --no-toolchain --arch-x86_64 # builds Lizarx without toolchain for x86_64 target(use this, when you made small changes outside the toolchain )
- GDT
- IDT
- PMM
- VMM
- Multitasking
- Multithreading(no pthreads wrapper yet and also not tested, but supposed to work)
- Userspace
- full OS-specific toolchain(including cross-compiler libc and newlib port)
- Dynamic linker(ld.a)
- full X86_64 port
- basic SMP support(including SMP scheduling)
- SYSCALL/SYSRET syscall(x86_64 only)
- some very basic IPC(message queues, shared memory)
- unix like shell in C++ with OO semantics
- don't know yet :D