Commit Graph

41 Commits

Author SHA1 Message Date
aa9439c392 kernel: add channel/port ipc mechanism 2026-02-19 19:21:04 +00:00
2f413c603d kernel: all string parameters now take a corresponding length parameter 2026-02-19 19:08:17 +00:00
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
409725f9d4 kernel: implementing mapping and execution of bsp executable 2026-02-08 13:13:03 +00:00
8811016b7d kernel: remove redundant header files 2025-05-20 23:14:33 +01:00
62ec4c93ab meta: rename 2024-11-02 11:31:51 +00:00
8497962af6 kernel: show current task id, thread id, and cpu id in test messages 2024-09-17 17:49:34 +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
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
c0f380ddca kernel: lock block device before reading from it 2023-07-11 21:26:22 +01:00
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
a7c28e983c kernel: tty: implement tty input using line disciplines 2023-06-11 16:47:33 +01:00
3cc72f1f24 kernel: tty: support printing output from printk() 2023-06-11 14:55:47 +01:00
d10c89544c kexts: fbcon: implement VGA text mode tty driver 2023-06-11 09:24:22 +01:00
d09ad5838e kernel: implement tty driver system 2023-06-10 21:41:07 +01:00
20f77893cf dev: implement bus device enumeration 2023-06-09 21:24:51 +01:00
f83ecca490 dev: boot framebuffer support 2023-06-08 20:46:43 +01:00
b7b0691b8f dev: implement driver objects to organise and identify devices 2023-06-02 19:35:07 +01:00
d02d05d922 obj: add read() and write() object callbacks 2023-05-14 21:11:32 +01:00
0238008986 dev: auto-generate device name in device_register if name is unspecified 2023-05-11 21:19:00 +01:00
664e5f57b2 test: report keypresses from /dev/system/misc/ps2kbd 2023-05-10 20:34:53 +01:00
bd26039102 kernel: test: adjust tick-tock multithreading test timing 2023-05-07 12:38:06 +01:00
7d321fb7f0 sched: add kernel thread creation and SMP-aware thread scheduling 2023-05-04 21:43:18 +01:00
cbd6aae037 kernel: test: replace schedule_timeout with milli_sleep 2023-05-03 19:27:58 +01:00
8a0291c9b3 sched: add timer tasks and schedule_timeout() 2023-04-30 21:09:36 +01:00
085c3d2a89 sched: add kernel-mode context switching 2023-04-30 14:27:57 +01:00
eb998860a5 kxld: implement internal kext dependency resolution and initialisation 2023-04-09 16:43:03 +01:00
9b75ca8b8c kernel: enumerate internal kexts during boot 2023-04-08 09:27:21 +01:00
8e9127cd6a x86_64: init local apic on boot, or legacy pic/pit as fallback 2023-03-19 20:36:36 +00:00
57eaf4e01c kernel: implement cpu IDs and per-cpu variables 2023-03-18 19:35:00 +00:00
902df83654 sched: add struct and object types for task and thread objects 2023-03-06 11:08:26 +00:00
1a413189ab kernel: move object_bootstrap() call to kernel_init() 2023-03-06 11:08:02 +00:00
d41ea0cd52 kernel: implement initcalls and a testing system 2023-02-26 10:05:39 +00:00
b9b3794aee x86_64: initialise memblock using e820 2023-02-05 10:50:13 +00:00
17b90a484a kernel: print version banner on boot 2023-02-04 19:19:48 +00:00
31cb7aab8b kernel: add basic console registration system and printk() 2023-02-04 19:03:45 +00:00
247bb2b530 kernel: port sandbox components 2023-02-03 20:51:23 +00:00
c65f034e0e kernel: x86_64: add machine init function called by kernel_init 2023-02-03 20:24:27 +00:00
fe6b7220df Kernel is now compiled with -Wall -Werror -pedantic 2022-12-28 18:40:41 +00:00
26853c32c8 Implemented GDT initialisation 2022-12-24 10:28:41 +00:00
8475a6139e Implemented some basic libc functions and a text console 2022-12-21 08:29:33 +00:00