Commit Graph

489 Commits

Author SHA1 Message Date
67b3be9732 x86_64: add pmap_handle_fault to route user-mode page faults to vm-region to resolve 2026-02-08 13:03:28 +00:00
883b5ac9e2 vm: add vm-region to manage userspace virtual memory address spaces
vm-region supports creating nested regions of virtual memory, each with their
own memory protection restrictions.

vm-objects can be mapped into a vm-region, making the underlying memory
accessible. all mappings are lazy: page tables are not updated until the
mapped memory is accessed.
2026-02-08 12:59:08 +00:00
b8ccffd2d4 vm: add vm-object to represent non-contiguous physical memory allocations
vm-object can be used to demand-allocate non-contiguous physical memory, and
will provide an api for userspace programs to do the same. unless a vm-object
is created in-place (i.e. to represent a specific area of physical memory),
its memory pages are only allocated when the object is mapped AND someone
attempts to access the memory.
2026-02-08 12:58:31 +00:00
14ebcd4875 kernel: implement object handle tables 2026-02-08 12:55:47 +00:00
6950850f5b object: add a macro to define object lock/unlock functions 2026-02-08 12:55:13 +00:00
bcda479879 sched: implement task id allocation; remove thread id bitmap 2026-02-08 12:54:43 +00:00
7c4cff24f2 test: update object api usage 2026-02-08 12:52:14 +00:00
b31c3a40b4 vm: sparse: ensure that vm_pages for the reserved bsp region are created 2026-02-08 12:51:55 +00:00
2b1bed844a vm: change virt_to_phys param to const 2026-02-08 12:51:23 +00:00
26afc3c6c3 vm: sparse: fix region base/limit alignment calculation 2026-02-08 12:50:08 +00:00
d94a6ec7cb kernel: add generic FATAL_ERROR status code 2026-02-08 12:48:59 +00:00
0d73196b4b printk: add macro for conditional trace-level printk statements 2026-02-08 12:48:33 +00:00
687ba31d55 bitmap: fix bitmal_clear() clearing bits in the wrong direction 2026-02-08 12:47:58 +00:00
9e223ca5d0 x86_64: implement syscall instruction init and dispatch 2026-02-08 12:47:28 +00:00
4de1463e7c object: add functions to track handle allocation 2026-02-08 12:37:08 +00:00
5304e5be00 object: rename deref to unref 2026-02-08 12:36:32 +00:00
0853cff56b vm: remove vm_region; add vm_page_get_size_bytes 2026-02-08 12:33:36 +00:00
aaa76ff197 memblock: make virt_to_phys pointer param const 2026-02-08 12:33:03 +00:00
0490541dc9 kernel: adjust formatting 2026-02-08 12:32:48 +00:00
49a75a1bbe pmap: change pmap_add* virtual pointer parameter to virt_addr_t 2026-02-08 12:08:26 +00:00
34f614b881 libc: move fill_random to kernel/util 2026-02-08 12:06:50 +00:00
720ed75770 x86_64: add invalid pmap pointer constant 2026-02-08 11:59:18 +00:00
880930e917 x86_64: implement functions to jump to userspace 2026-02-08 11:58:27 +00:00
da611ab070 x86_64: find, record, and reserve the memory location of the bsp 2026-02-08 11:52:33 +00:00
129e782e99 kernel: add functions to get/set the bsp boot module location 2026-02-08 11:38:50 +00:00
00ea2b1b3b x86_64: adjust formatting 2026-02-08 11:36:16 +00:00
4051265876 x86_64: implement TSS initialisation and user/kernel stack pointer switching 2026-02-08 11:34:49 +00:00
564d4f9ba0 x86_64: rename struct cpu_context; move to machine/cpu.h 2026-02-08 11:32:09 +00:00
c04b33647c x86_64: add kernel and user virtual memory boundary definitions 2026-02-08 11:27:37 +00:00
a56d69e260 kernel: add a type to represent boot modules 2026-02-08 11:02:35 +00:00
af0d97d6f5 misc: changes from a long time ago 2026-02-03 21:28:15 +00:00
c7d4463f7e x86_64: remove redundant header files 2025-05-20 23:14:42 +01:00
8811016b7d kernel: remove redundant header files 2025-05-20 23:14:33 +01:00
e1aeac9562 obj: remove redundant object functions; move to kernel/ subfolder 2025-05-20 23:14:16 +01:00
0ba46e065c build: build script now exports compile commands 2025-05-20 23:12:21 +01:00
675a6de47e build: add build script to configure kernel and tools build systems 2025-05-19 22:01:12 +01:00
4d12cab7f7 doc: add kernel interface documentation 2024-11-02 15:12:05 +00:00
62ec4c93ab meta: rename 2024-11-02 11:31:51 +00:00
065fdeec65 build: convert build system to CMake 2024-11-02 11:21:22 +00:00
8497962af6 kernel: show current task id, thread id, and cpu id in test messages 2024-09-17 17:49:34 +01:00
ef05233dcf sched: allocate and assign ids to each thread 2024-09-17 17:49:05 +01:00
d29b955ee8 x86_64: re-enable legacy PIC and PIT initialisation 2024-09-17 17:48:26 +01:00
3f992d84fb kernel: remove everything that is related to device/fs management
this is now a microkernel.
2024-09-17 17:47:50 +01:00
9b00f83ff1 build: set default qemu display to SDL 2024-01-07 20:04:55 +00:00
15c576a99d tools: delete legacy amldecode tool 2024-01-07 20:04:23 +00:00
149f49bd28 vm: limit sparse page init loop to last free page frame
when the sector coverage mode is set to free, the loop that initialises the vm_page structs for free and reserved pages is limited to the same upper bound that is used to calculate the sector size and count.
2023-12-30 15:29:48 +00:00
abfd97b924 memblock: fix bounds being ignored when iterating through total or reserved regions 2023-12-30 15:29:13 +00:00
b0c021d4e9 kernel: add kernel.early-console and kernel.console boot args
kernel.early-console is used to specify which output device the
kernel boot log should be written to. the first thing the kernel
does on boot after initialising the bootstrap processor is initialise
the early console, making it useful for debugging problems that
occur early in the boot process. this arg accepts a list of hard-coded
values for output devices, such as tty0 for the display or ttyS0
for the serial port. the exact values supported will depend on the
platform.

once all drivers are loaded, the kernel switches to the device specified
by kernel.console for output. unlike kernel.early-console, this arg
specifies the name of a tty device in /dev/tty. this means that, not
only are more devices supported (any device provided by a tty driver),
but the kernel can also get input from the user using this console too
(not used by the kernel itself, but will be used by the user to interact
with userspace programs, like the shell).
2023-12-30 09:09:18 +00:00
fc56f906d3 kexts: serialcon: implement writing to serial ports via tty interface 2023-12-30 09:06:47 +00:00
8af6670b0d x86_64: move serial port code to serialcon kext 2023-12-29 20:35:26 +00:00