921c91c02a
vm: add vm-controller object
2026-03-12 20:39:28 +00:00
3fd608b623
kernel: add equeue object
...
equeue is a way for the kernel to deliver events to userspace programs.
2026-03-12 20:37:51 +00:00
7d4cede788
misc: adjust formatting
2026-03-12 20:34:31 +00:00
3f21e888d6
sched: split sched.h into separate header files
2026-03-12 20:30:36 +00:00
36c5ac7837
kernel: re-implement sending handles via port messages
2026-03-01 19:10:01 +00:00
b1bdb89ca4
vm: region: add a function to write data from a kernel buffer to a vm-region
2026-03-01 19:09:30 +00:00
e4de3af00d
kernel: remove support for sending kernel handles via port/channel
2026-02-26 20:53:47 +00:00
1cdde0d32e
kernel: add functions for safely (un)locking pairs of objects
...
when locking a pair of objects, the object with the lesser memory address
is always locked first. the pair is unlocked in the opposite order.
2026-02-26 19:38:49 +00:00
1c7c90ef39
kernel: channel: implement channel_read_msg and msg_read
2026-02-23 21:52:03 +00:00
34bd6e479c
vm: region: add nr_bytes_moved output param to memmove_v
2026-02-23 21:50:35 +00:00
5f0654430d
syscall: add task_self, task_get_address_space, and vm_region_kill
2026-02-23 18:43:49 +00:00
b1ffdcf2bc
vm: region: improve locking rules and semantics; implement region killing
...
the rules around acquiring locks have been strictly defined and
implemented, and general lock usage has been improved, to fix and
prevent several different issues.
a vm-region is now destroyed in two separate steps:
1. it is "killed": all mappings are unmapped and deleted, the
region is removed from its parent, and the region and all of
its sub-regions are marked as "dead", preventing any
further actions from being performed with the region.
2. it is "destroyed": the vm-region object is de-allocated when
the last reference/handle is closed. the references that this
region holds to any sub-regions are also released, meaning
these regions may also be de-allocated too.
2026-02-23 18:42:47 +00:00
5690dd5b9c
kernel: add support for recursive object destruction (without recursion)
...
this system makes it possible for an object that forms part of a tree
to be safely recursively destroyed without using recursion.
2026-02-23 18:34:12 +00:00
37ae7aeef7
kernel: implement globally-unique object ids
2026-02-23 18:32:11 +00:00
fe107fbad3
kernel: locks: add spin lock/unlock function that don't change interrupt state
2026-02-23 18:24:49 +00:00
77936e3511
kernel: implement sending, receiving, and replying to message via port/channel
2026-02-21 11:32:57 +00:00
7f049293f4
vm: memblock: add memblock_dump to header
2026-02-21 11:27:28 +00:00
0680b73461
kernel: iovec: implement iterating through an iovec list stored in userspace
2026-02-21 11:17:16 +00:00
aa0933be10
vm: region: implement reading from a user-space vm-region into a kernel buffer
2026-02-21 11:16:11 +00:00
85006411bd
kernel: add header files
2026-02-19 19:13:44 +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
9f7b7bdd2d
kernel: refactor syscall dispatch system
2026-02-08 16:17:11 +00:00
fb7d7635c2
vm: region: refactor to use offsets rather than absolute addresses
2026-02-08 15:51:51 +00:00
409725f9d4
kernel: implementing mapping and execution of bsp executable
2026-02-08 13:13:03 +00:00
1c74291b99
kernel: add a temporary syscall dispatch system
2026-02-08 13:12:24 +00:00
5d28955dc6
vm: update vm-page documentation
2026-02-08 13:11:41 +00:00
ee82097017
sched: implement user-mode task and thread creation
2026-02-08 13:11:17 +00:00
d2f303680d
sched: add root vm-region and handle table to struct task
2026-02-08 13:10:54 +00:00
27bed1a3d3
sched: all kernel-mode tasks now have negative task ids
2026-02-08 13:09:29 +00:00
18a5325fa7
sched: add PID_MAX definition
2026-02-08 13:07:14 +00:00
7eaad64969
pmap: declare fault handler function and flags
2026-02-08 13:06:19 +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
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
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
129e782e99
kernel: add functions to get/set the bsp boot module location
2026-02-08 11:38:50 +00:00
a56d69e260
kernel: add a type to represent boot modules
2026-02-08 11:02:35 +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
ef05233dcf
sched: allocate and assign ids to each thread
2024-09-17 17:49:05 +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