aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
7 dayskapi: move CPU to kapiFelix Morgner11-106/+67
7 daysfixup! kapi: move platform functions to CPUFelix Morgner3-15/+7
7 dayskapi: move platform functions to CPUFelix Morgner9-127/+95
8 dayside: update neovim configurationFelix Morgner1-4/+15
8 dayskapi: restructure ACPI implementationFelix Morgner12-239/+565
9 dayskapi: return region pair for MMIO allocationFelix Morgner4-18/+31
9 daysx86_64: extend LAPIC initializationFelix Morgner2-10/+76
9 daysx86_64: fix CPU enumerationFelix Morgner1-3/+2
9 dayskapi/bus: fix eager initializationFelix Morgner2-2/+9
9 daysx86_64: only initialize BSP LAPICFelix Morgner3-11/+29
9 daysx86_64: don't hardcode the LAPIC addressFelix Morgner1-11/+6
9 daysx86_64: implement LAPIC initializationFelix Morgner2-3/+36
9 dayskernel: fix mmio allocatorFelix Morgner1-11/+15
9 dayskapi: fix mmio initializationFelix Morgner2-2/+5
9 dayskapi: add basic support for MMIO mappingFelix Morgner7-23/+228
9 dayside: clean up neovim configurationFelix Morgner1-6/+7
10 daysdocs: remove old documentationFelix Morgner90-545/+0
10 dayside: simplify overall configurationFelix Morgner3-58/+42
10 dayside: enable debugging in neovimFelix Morgner1-15/+94
11 dayskernel/tests: fix link issueFelix Morgner4-0/+106
11 daysMerge branch 'fmorgner/develop-BA-FS26/apci' into develop-BA-FS26Felix Morgner32-107/+1043
This patchset introduces basic support for ACPI. Currently, the only user of that support is the CPU discovery subsystem. It uses the processed ACPI information to initialize CPU core devices and their associated local APICs.
11 dayskapi/platform: invert discovery dependenciesFelix Morgner3-23/+16
11 daysqemu: enable multiple coresFelix Morgner1-0/+4
11 dayskernel: generalize CPU discoveryFelix Morgner9-80/+147
11 dayskapi: extract more code to the kernelFelix Morgner5-70/+114
11 dayskernel/acpi: discover local interrupt controllersFelix Morgner17-58/+386
11 daysx86_64/devices: extract initialization codeFelix Morgner4-54/+85
11 dayskernel/acpi: implement basic table discoveryFelix Morgner5-12/+127
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