Directory Structure
Contents
mck/ ├─ include/ │ ├─ core.h │ ├─ drivers.h │ ├─ modules.h │ ├─ utils/ │ ├─ math/ │ ├─ log/ │ ├─ config/ │ ├─ debug/ │ ├─ buffer/ │ ├─ bit/ │ ├─ console/ │ ├─ crypto/ │ ├─ device/ │ ├─ drivers/ │ ├─ event/ │ ├─ fs/ | ├─ graphics/ | ├─ gui/ │ ├─ io/ │ ├─ mm/ │ ├─ sys/ │ ├─ tty/ | ├─ storage/ | ├─ audio/ | ├─ input/ │ ├─ vfs/ | ├─ net/ │ ├─ table/ │ └─ time/ ├─ src/ │ ├─ core/ │ ├─ drivers/ │ ├─ modules/ | ├─ gui/ | ├─ input/ │ ├─ utils/ │ ├─ math/ │ ├─ log/ | ├─ net/ | ├─ storage/ │ ├─ config/ │ ├─ debug/ │ ├─ buffer/ │ ├─ bit/ │ ├─ table/ | ├─ vfs/ | ├─ sys/ | ├─ mm/ | ├─ audio/ | ├─ tty/ | ├─ console/ | ├─ crypto/ | ├─ device/ | ├─ event/ | ├─ fs/ | ├─ graphics/ | ├─ io/ | ├─ time/ │ └─ main.c ├─ asm/ | ├─ BOOT8.asm │ ├─ x86/ │ │ ├─ boot/ │ │ ├─ cpu/ │ │ ├─ mem/ │ │ └─ util/ │ └─ x64/ │ ├─ boot/ │ ├─ cpu/ │ ├─ mem/ │ └─ util/ ├─ cpp/ │ ├─ core/ │ └─ utils/ ├─ kernel/ │ ├─ arch/ │ | ├─ common/ │ │ └─ x86_64/ │ ├─ mm/ │ ├─ sched/ │ ├─ debug/ │ ├─ init.c │ └─ kernel.h ├─ ld/ │ ├─ linker.ld │ └─ kernel.ld ├─ tools/ ├─ build/ └─ docs/
Core Concepts
Core (C89)
The core provides:
- fixed-size integer types
- result codes
- logging callback
- initialization state
It contains no platform-specific code and no standard library dependencies.
Drivers
Drivers are defined by a name and an initialization function. They are stored in a static registry and initialized in order.
Modules
Modules follow the same structure as drivers and are initialized after them.
Utilities
mck includes:
- memory utilities (set, copy, arena allocator)
- static lists
- string utilities
- math helpers
- bitsets
- ring buffers
- hash tables
- event queues
These components are designed for environments without dynamic allocation.
Time System
A minimal time system provides:
- tick counter
- millisecond uptime
- second uptime
It is hardware-agnostic and can be driven by any timer interrupt.