Commit Graph

66 Commits

Author SHA1 Message Date
wash f1dd9d8564 kernel: handle: init handle table duplication 2026-04-19 20:07:51 +01:00
wash 9a9b0f63ba sched: task: optional handle_table pointer can now be passed to task_create 2026-04-19 20:04:18 +01:00
wash b52890d842 kernel: object: add missing parentheses to OBJECT_CAST 2026-04-19 20:00:16 +01:00
wash b92542c688 syscall: handle: add stub implementation of kern_handle_control 2026-04-01 18:41:33 +01:00
wash b8d3125233 syscall: task: initial implementation of task_duplicate 2026-04-01 18:40:28 +01:00
wash a0cab068da vm: address-space: implement copy-on-write address-space duplication 2026-04-01 18:36:25 +01:00
wash 2cbfa7d7d2 vm: object: implement creating copy-on-write duplicates of vm-objects 2026-04-01 18:33:24 +01:00
wash 4143e12a29 vm: add a copy-on-write ref count to vm_page 2026-04-01 18:32:32 +01:00
wash f28fab7afa vm: object: implement vm_object_put_page to add existing pages to a vmo 2026-04-01 18:31:05 +01:00
wash 6c5bf2344f sched: thread: implement cloning of userspace thread contexts 2026-04-01 18:29:54 +01:00
wash 61050fd54b kernel: atomic: change atomic_t to 32-bit int 2026-04-01 18:27:31 +01:00
wash dd34b1d80f pmap: add pmap_get to retrieve existing page table entries 2026-04-01 18:24:13 +01:00
wash 876f91d8be sched: thread: add cpu context pointer usable during interrupts and syscalls 2026-04-01 18:22:23 +01:00
wash 7bcd1577be pmap: fix PFN() not clearing upper PTE control bits 2026-04-01 18:20:50 +01:00
wash 512356ac2d sched: enforce ref-counting on current task/thread pointers 2026-04-01 18:17:05 +01:00
wash 8b41f5e681 kernel: remove unused functionality 2026-03-29 14:54:07 +01:00
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