wash
04617e81e3
kernel: add a syscall to query generic information about an object
2026-03-29 11:50:37 +01:00
wash
62770f4ab2
kernel: replace kern_handle_duplicate with the more powerful kern_handle_transfer
...
this syscall can move and copy handles within the current task, or from/to
other tasks
2026-03-29 11:48:59 +01:00
wash
537242e606
kernel: handle: add support for allocating a specific handle value
2026-03-29 11:47:22 +01:00
wash
f5a83af0d7
kernel: remove SEND_BLOCKED and REPLY_BLOCKED statuses from ports
...
this allows a port to be used by multiple threads at the same time
2026-03-29 11:42:23 +01:00
wash
95d33ddcb9
kernel: msg: async messages no longer hold a pointer to the thread/port that sent them
...
this prevents a race condition where an event is sent as a port is being destroyed.
when the server gets around to handling the event, it now refers to a different port
that was created in the mean-time.
2026-03-25 20:19:19 +00:00
wash
a0a6a061a4
vm: controller: add an auto-detach flag for vm-objects
2026-03-24 20:24:12 +00:00
wash
4be642f2e5
vm: controller: implement asynchronous DETACH page requests
2026-03-24 20:21:35 +00:00
wash
7dc0c742fa
kernel: rebuild object ref-counting using atomic types
2026-03-24 19:10:36 +00:00
wash
9faa11cddc
kernel: add atomic operations
2026-03-24 19:09:36 +00:00
wash
89d02c72ee
kernel: msg: implement asynchronous event messages
2026-03-24 18:32:33 +00:00
wash
110f625f04
syscall: task: implement thread_self
2026-03-22 19:02:31 +00:00
wash
4551e7b2e6
sched: implement various ways to end tasks and threads
2026-03-18 21:07:43 +00:00
wash
e03b2e07d0
vm: address-space: implement address space cleanup
2026-03-18 21:07:27 +00:00
wash
24f9ef85bf
sched: implement user-configurable fs and gs segment base addresses
2026-03-18 21:07:05 +00:00
wash
2a1a0cf14d
kernel: finish implementation of private and shared futexes
2026-03-18 21:02:09 +00:00
wash
b774415f64
sched: wait: implement wakeup_n, waitqueue_empty
2026-03-18 20:56:15 +00:00
wash
1eef23ea98
thread: store struct msg on the stack instead of in the thread
2026-03-18 20:52:47 +00:00
wash
30c9c9db45
kernel: add futex definitions
2026-03-15 22:22:58 +00:00
wash
8a38d940cc
vm: address-space: add function to translate virtual addresses to physical
2026-03-15 22:22:25 +00:00
wash
a2e918c428
vm: evict PTE entries for transferred vm-object pages
2026-03-15 14:40:24 +00:00
wash
0af35c70ef
vm: implement demand-paging via userspace services with vm-controller
2026-03-14 22:39:14 +00:00
wash
f04c524bb5
vm: object: implement transferring pages between objects
2026-03-14 22:38:14 +00:00
wash
5d04dbb15a
kerne: object: add lock_pair() functions to object lock template macro
2026-03-14 22:32:59 +00:00
wash
2d267d2b51
kernel: add a syscall to duplicate a handle
2026-03-14 22:31:37 +00:00
wash
62bdb51618
kernel: add functions to lock/unlock a pair of locks without saving irq flags
2026-03-14 22:25:15 +00:00
wash
89dac0c951
sched: add a thread flag to indicate when a thread is scheduled on a runqueue
...
this prevents runqueue corruption that can occur if rq_enqueue is called on
a thread that's already on a runqueue.
2026-03-14 22:22:05 +00:00
wash
7c630ece54
sched: add wait begin/end functions that don't change thread state
...
these functions can be used when waiting on multiple queues at once, to prevent
the thread state from being changed unexpectedly while initialising a set of wait items.
2026-03-14 22:20:10 +00:00
wash
d2203d9a65
kernel: replace random number generator with mersenne twister
2026-03-14 22:16:56 +00:00
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
2fb8f556b4
kernel: implement a generic object signalling system
2026-03-12 20:40:23 +00:00
wash
921c91c02a
vm: add vm-controller object
2026-03-12 20:39:28 +00:00
wash
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
wash
7d4cede788
misc: adjust formatting
2026-03-12 20:34:31 +00:00
wash
3f21e888d6
sched: split sched.h into separate header files
2026-03-12 20:30:36 +00:00
wash
36c5ac7837
kernel: re-implement sending handles via port messages
2026-03-01 19:10:01 +00:00
wash
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
wash
e4de3af00d
kernel: remove support for sending kernel handles via port/channel
2026-02-26 20:53:47 +00:00
wash
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
wash
1c7c90ef39
kernel: channel: implement channel_read_msg and msg_read
2026-02-23 21:52:03 +00:00
wash
34bd6e479c
vm: region: add nr_bytes_moved output param to memmove_v
2026-02-23 21:50:35 +00:00
wash
5f0654430d
syscall: add task_self, task_get_address_space, and vm_region_kill
2026-02-23 18:43:49 +00:00
wash
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
wash
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
wash
37ae7aeef7
kernel: implement globally-unique object ids
2026-02-23 18:32:11 +00:00
wash
fe107fbad3
kernel: locks: add spin lock/unlock function that don't change interrupt state
2026-02-23 18:24:49 +00:00
wash
77936e3511
kernel: implement sending, receiving, and replying to message via port/channel
2026-02-21 11:32:57 +00:00
wash
7f049293f4
vm: memblock: add memblock_dump to header
2026-02-21 11:27:28 +00:00
wash
0680b73461
kernel: iovec: implement iterating through an iovec list stored in userspace
2026-02-21 11:17:16 +00:00
wash
aa0933be10
vm: region: implement reading from a user-space vm-region into a kernel buffer
2026-02-21 11:16:11 +00:00
wash
85006411bd
kernel: add header files
2026-02-19 19:13:44 +00:00