Commit Graph

43 Commits

Author SHA1 Message Date
wash c628390f4a vm: replace vm-region with address-space
address-space is a non-recursive data structure, which contains a flat list of vm_areas representing
mapped vm-objects.

userspace programs can no longer create sub-address-spaces. instead, they can reserve portions of
the address space, and use that reserved space to create mappings.
2026-03-13 19:44:50 +00:00
wash 3f21e888d6 sched: split sched.h into separate header files 2026-03-12 20:30:36 +00:00
wash aa9439c392 kernel: add channel/port ipc mechanism 2026-02-19 19:21:04 +00:00
wash 2f413c603d kernel: all string parameters now take a corresponding length parameter 2026-02-19 19:08:17 +00:00
wash 6019c9307d kernel: separate headers into kernel and user headers
all kernel headers have been moved from include/mango to include/kernel
and include definitions that are only relevant to kernel-space.

any definitions that are relevant to both kernel- and user-space
(i.e. type definitions, syscall IDs) have been moved to
include/mango within libmango.
2026-02-19 18:54:48 +00:00
wash 409725f9d4 kernel: implementing mapping and execution of bsp executable 2026-02-08 13:13:03 +00:00
wash 8811016b7d kernel: remove redundant header files 2025-05-20 23:14:33 +01:00
wash 62ec4c93ab meta: rename 2024-11-02 11:31:51 +00:00
wash 8497962af6 kernel: show current task id, thread id, and cpu id in test messages 2024-09-17 17:49:34 +01:00
wash 3f992d84fb kernel: remove everything that is related to device/fs management
this is now a microkernel.
2024-09-17 17:47:50 +01:00
wash 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
wash c0f380ddca kernel: lock block device before reading from it 2023-07-11 21:26:22 +01:00
wash 3233169f25 dev: implement reading from block devices
reading from block devices is done using the block cache (bcache).
This cache stores sectors from a block device in pages of memory
marked as 'cached', which will allow them to be reclaimed when
memory pressure is high (TODO).

while block device drivers implement callbacks allowing reading/writing
at block-granularity, the device subsystem uses the block cache to
implement reading/writing at byte-granularity in a driver-agnostic way.

block drivers can disable the block cache for their devices, but this
will require that any clients communicate with the devices at
block-granularity.

also added an offset parameter to device and object read/write functions/callbacks.
2023-07-09 21:58:40 +01:00
wash a7c28e983c kernel: tty: implement tty input using line disciplines 2023-06-11 16:47:33 +01:00
wash 3cc72f1f24 kernel: tty: support printing output from printk() 2023-06-11 14:55:47 +01:00
wash d10c89544c kexts: fbcon: implement VGA text mode tty driver 2023-06-11 09:24:22 +01:00
wash d09ad5838e kernel: implement tty driver system 2023-06-10 21:41:07 +01:00
wash 20f77893cf dev: implement bus device enumeration 2023-06-09 21:24:51 +01:00
wash f83ecca490 dev: boot framebuffer support 2023-06-08 20:46:43 +01:00
wash b7b0691b8f dev: implement driver objects to organise and identify devices 2023-06-02 19:35:07 +01:00
wash d02d05d922 obj: add read() and write() object callbacks 2023-05-14 21:11:32 +01:00
wash 0238008986 dev: auto-generate device name in device_register if name is unspecified 2023-05-11 21:19:00 +01:00
wash 664e5f57b2 test: report keypresses from /dev/system/misc/ps2kbd 2023-05-10 20:34:53 +01:00
wash bd26039102 kernel: test: adjust tick-tock multithreading test timing 2023-05-07 12:38:06 +01:00
wash 7d321fb7f0 sched: add kernel thread creation and SMP-aware thread scheduling 2023-05-04 21:43:18 +01:00
wash cbd6aae037 kernel: test: replace schedule_timeout with milli_sleep 2023-05-03 19:27:58 +01:00
wash 8a0291c9b3 sched: add timer tasks and schedule_timeout() 2023-04-30 21:09:36 +01:00
wash 085c3d2a89 sched: add kernel-mode context switching 2023-04-30 14:27:57 +01:00
wash eb998860a5 kxld: implement internal kext dependency resolution and initialisation 2023-04-09 16:43:03 +01:00
wash 9b75ca8b8c kernel: enumerate internal kexts during boot 2023-04-08 09:27:21 +01:00
wash 8e9127cd6a x86_64: init local apic on boot, or legacy pic/pit as fallback 2023-03-19 20:36:36 +00:00
wash 57eaf4e01c kernel: implement cpu IDs and per-cpu variables 2023-03-18 19:35:00 +00:00
wash 902df83654 sched: add struct and object types for task and thread objects 2023-03-06 11:08:26 +00:00
wash 1a413189ab kernel: move object_bootstrap() call to kernel_init() 2023-03-06 11:08:02 +00:00
wash d41ea0cd52 kernel: implement initcalls and a testing system 2023-02-26 10:05:39 +00:00
wash b9b3794aee x86_64: initialise memblock using e820 2023-02-05 10:50:13 +00:00
wash 17b90a484a kernel: print version banner on boot 2023-02-04 19:19:48 +00:00
wash 31cb7aab8b kernel: add basic console registration system and printk() 2023-02-04 19:03:45 +00:00
wash 247bb2b530 kernel: port sandbox components 2023-02-03 20:51:23 +00:00
wash c65f034e0e kernel: x86_64: add machine init function called by kernel_init 2023-02-03 20:24:27 +00:00
wash fe6b7220df Kernel is now compiled with -Wall -Werror -pedantic 2022-12-28 18:40:41 +00:00
wash 26853c32c8 Implemented GDT initialisation 2022-12-24 10:28:41 +00:00
wash 8475a6139e Implemented some basic libc functions and a text console 2022-12-21 08:29:33 +00:00