aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
11 dayskapi: hook ACPI initialization up to boot processFelix Morgner8-21/+186
11 dayskapi: move independent implementation to kernelFelix Morgner4-6/+5
11 dayskapi: add basic ACPI supportFelix Morgner8-15/+205
13 daysMerge branch 'windows-development-notes' into 'develop-BA-FS26'Marcel Braun1-1/+13
add windows development notes See merge request teachos/kernel!21
2026-04-02fix stylingLukas Oesch1-4/+4
2026-04-02add windows development notesLukas Oesch1-1/+13
2026-04-02docs: begin breathe documentationFelix Morgner20-52/+227
2026-04-02Merge branch 'fmorgner/develop-BA-FS26/pit-device' into develop-BA-FS26Felix Morgner26-81/+1165
This changeset introduces a central device management system. The system comprises the following components: - kapi::devices::bus (type) A bus can be both a real (physically present inside the machine) or virtual (purely conceptual) bus. Busses form a hierarchy rooted in the virtual root_bus (accessible via `kapi::devices::get_root_bus`). Busses are derived from `kapi::devices::device`, and own devices. This means that a bus can be attached to another bus. This facilitates a uniform structure for device ownership. Each device needs to be attached to exactly one bus. Virtual devices, e.g. RAM disks, should be attached to the root root bus (via the `add_child` member function). Once a device, or bus, has been attached to a bus, it will be initialized (by means of a call to the `init` member function). Busses are responsible to initialize their children. If a bus has already been initialized, any newly attached children will automatically be initialized. During initialization, the `probe` member function of the bus under initialization weill be invoked. This allows a bus implementation to determine if the hardware, if any, is ready to be initialized and to also perform any required initialization steps. IMPORTANT: busses take ownership of their children in the form of a `unique_ptr`. - kapi::devices (namespace) The functions `allocate_major_number`, `register_device`, `unregister_device`, and `find_device` form the device manager. The device manager is responsible for keeping a record of active devices, allowing O(log n) lookup of devices by major and minor, and O(n) lookup by name. Additionally, the device manager is responsible for handing out major numbers (via `allocate_major_number`) and keeping track of active devices. When a child is attached to a bus, it will also automatically be registered with the device manager. Lookup of devices via the device manager can be achieved by means of either overload of `find_device`. Devices should never ask the manager directly for a major number. Instead, a controller should be used, which requests a major number per device "class" (as in kind, not language class). For example, a RAM disk controller may request a single major number for all RAM disks it is going to create. When the controller creates a new device of a given "class", e.g. a RAM disk, it should then supply that major number to the new device instance. IMPORTANT: the device manager does not own the active devices. Rather it holds a `flat_map` indexed by `pair{major, minor}` and resolving to `kstd::observer_ptr<device>`. - kstd::observer_ptr (type) An observer pointer is a simple vocabulary type to express the concept of having no ownership of the pointed-to object. In essence it is equivalent to a standard C-style pointer, but expresses semantics by virtue of being a separate type.
2026-04-02x86_64: ensure PIT is not overwhelmed on configFelix Morgner3-5/+15
2026-04-02devices: don't automatically allocate major numbers in ctorsFelix Morgner7-10/+18
2026-04-02kapi/bus: ensure all devices get initializedFelix Morgner1-1/+1
2026-04-02kapi: allow for device searchesFelix Morgner3-1/+39
2026-04-02x86_64: implement legacy PIT driverFelix Morgner10-25/+146
2026-04-02kapi: extract common bus codeFelix Morgner7-141/+66
2026-04-02x86_64/devices: implement ISA bus stubFelix Morgner9-3/+140
2026-04-02kapi: add basic device subsystemFelix Morgner7-0/+208
2026-04-02kstd: make string formattableFelix Morgner1-0/+13
2026-04-02kstd: move observer_ptr to bitsFelix Morgner4-6/+8
2026-04-02kstd/observer_ptr: extend test suiteFelix Morgner2-24/+149
2026-04-02kstd/tests: extend operation trackerFelix Morgner2-62/+128
2026-04-02kstd: add some basic observer_ptr testsFelix Morgner3-3/+239
2026-04-02kstd: introduce observer_ptrFelix Morgner2-1/+156
2026-04-02kapi/devices: introduce basic bus abstractionFelix Morgner1-0/+40
2026-04-02ci: reduce coverage verbosityFelix Morgner1-3/+3
2026-04-02ci: split build and testFelix Morgner1-13/+19
2026-04-02chore: remove valgrind core fileFelix Morgner1-0/+0
2026-04-02kernel/tests: improve documentationFelix Morgner7-10/+88
2026-04-02kernel/tests: clean up implementation structureFelix Morgner18-187/+261
2026-04-02Merge branch 'fmorgner/develop-SA-FS26/kernel-bht' into 'develop-BA-FS26'Marcel Braun32-57/+1298
Add experimental support for kernel tests See merge request teachos/kernel!20
2026-04-01kernel/tests: prevent double mapping of pagesFelix Morgner3-1/+19
2026-04-01kernel/tests: add basic heap allocator testsFelix Morgner4-18/+118
2026-04-01kernel/tests: don't rely on vector for fake memoryFelix Morgner3-12/+100
2026-04-01kernel/test: rename test include to test_supportFelix Morgner14-22/+22
2026-04-01kernel/tests: clean up fake memory implementationFelix Morgner7-98/+166
2026-04-01kernel/tests: improve memory cleanupFelix Morgner1-6/+29
2026-04-01kernel/tests: move initialization to a listenerFelix Morgner8-49/+90
2026-04-01kstd: fix signatures of libc functionsFelix Morgner2-10/+10
2026-04-01kernel: add ram disk device testsFelix Morgner2-0/+120
2026-04-01kernel: add bitmap_allocator testsFelix Morgner4-11/+309
2026-04-01kernel/tests: update coverage configurationFelix Morgner3-3/+5
2026-04-01kernel/tests: dissolve tests into source treeFelix Morgner16-88/+85
2026-04-01kernel/test: only initialize kernel when running testsFelix Morgner1-9/+26
2026-04-01kernel/tests: implement basic simulated memoryFelix Morgner6-5/+150
2026-04-01kernel/tests: add kapi::memory::init stubFelix Morgner3-0/+15
2026-04-01kernel/tests: add kapi::interrupts::init stubFelix Morgner3-4/+18
2026-04-01kernel/tests: add kapi::cpu::init stubFelix Morgner2-1/+19
2026-04-01kernel/tests: implement platform CIO kapiFelix Morgner8-20/+173
2026-04-01kernel: begin basic bht implementationFelix Morgner8-12/+119
2026-04-01build: fix kernel+arch buildFelix Morgner2-30/+40
2026-04-01kernel: split off objects into a libraryFelix Morgner1-12/+19