343 Commits

Author SHA1 Message Date
Ashwin Naren
4f91fe87d6 fix clippy 2026-05-14 19:55:22 -07:00
Ashwin Naren
dbaf4077c7 formatting 2026-05-14 19:36:57 -07:00
Ashwin Naren
74b5e120b2 fix sys_sched_getaffinity 2026-05-14 19:24:43 -07:00
Ashwin Naren
971462ed8a implement exceptfds partially for sys_pselect6 to fix arch bash and sh. 2026-05-12 10:00:00 -07:00
Ashwin Naren
bb8dde3258 address review 2026-05-11 17:17:20 -07:00
Ashwin Naren
775824ed83 cgroup2 partial stubbing 2026-05-11 17:16:41 -07:00
Matthew Leach
72ef61fb10 libkernel: pg_tear_down: add more flexibility
The current tear down implementation assumes that all data mappings &
intermediate tables need to be free'd. That might not provide enough
flexibility for all tear-down scenarios.

Provide a more flexible API, passing current walk state into a control
function which makes a descision regarding tear-down and recursion.
2026-05-10 13:57:49 -07:00
Matthew Leach
d0b10adf7c libkernel: move SmallocPageAlloc into libkernel
The `SmallocPageAlloc` type is generic and architecture-independent, so
it belongs in libkernel rather than the kernel's arm64-specific code. It
is placed in memory::paging::smalloc_page_allocator and gated by the
existing paging feature.

The kernel's copy is replaced with a thin re-export so all call sites
are unaffected.
2026-05-10 13:57:49 -07:00
Matthew Leach
80af2e8852 libkernel: pg_offset: decouple from VirtualMemory trait
Since the only requirement for a `PageOffsetTranslator` is a constant
offset, pass that in as a generic parameter, allowing it to be decoupled
from the `VirtualMemory` trait.
2026-05-10 13:57:49 -07:00
Matthew Leach
370aae9697 libkernel: CpuOps: make interrupt flags a associated type
Rather than hard-coding the interrupt flags as a `usize`. Allow each CPU
architecture to define it's own interrupt flags type via an associated
type.
2026-05-10 13:57:49 -07:00
Ashwin Naren
20c17b69c5 implement F_DUPFD_CLOEXEC for fcntl 2026-04-26 21:21:20 -07:00
Matthew Leach
5af78647b0 Merge pull request #274 from arihant2math/better-timers 2026-04-23 17:36:24 +01:00
Matthew Leach
4a6ef6f3de Merge pull request #257 from arihant2math/unix-dgram 2026-04-23 17:36:01 +01:00
Ashwin Naren
99d72786ad address review 2026-04-23 09:10:51 -07:00
Ashwin Naren
bf73a8914f use generic wakeup instead of specialized 2026-04-18 18:39:28 -07:00
Ashwin Naren
65d0581736 implement itimer syscalls 2026-04-18 18:39:28 -07:00
Ashwin Naren
6b97bab57f wake signalfd readers on signal delivery
- add per-task signal waiter notifier
- wake waiters when task/group signals are queued
- replace signalfd polling sleep with waker-based waiting
- route SIGCHLD and other signal enqueue sites through shared helpers
2026-04-17 14:22:15 -07:00
Ashwin Naren
14ae01767d address review 2026-04-17 14:22:15 -07:00
Ashwin Naren
defa422243 signal4fd syscall 2026-04-17 14:22:15 -07:00
Ashwin Naren
e2202e1cb8 epoll implementation 2026-04-17 14:22:15 -07:00
Ashwin Naren
3ddcc8e7b3 pidfd stub 2026-04-17 14:22:15 -07:00
Matthew Leach
52270c7525 libkernel: pg_tear_down: support block mappings
Support tearing down block mappings when walking the page table
hierarchy.
2026-04-17 22:10:39 +01:00
Matthew Leach
1f6ade8a13 arm64: fix formatting
Fix import formatting.
2026-04-16 21:26:46 +01:00
Matthew Leach
1e8b115376 libkernel: paging: move NextLevel to TableMapper trait
Move the NextLevel AT into the TableMapper (descriptor-level) trait.
This allows us to provide a blanket implementation of TableMapperTable
for all tables where, Table::Descriptor : TableMapper.
2026-04-16 21:22:16 +01:00
Matthew Leach
b8292cf359 libkernel: memory: move RecursiveWalker to non-arch module
Since the architectural details of descriptor implementation is hidden
behind traits, the code for walking page tables is arch-agnostic.
Therefore, promote it to shared code for use by other architectures.
2026-04-16 21:22:16 +01:00
Matthew Leach
57d35b4ed7 libkernel: paging: move NullTlbInvalidator into shared code
Move the NullTlbInvalidator implementation into shared code since it's
architecturally agnostic.
2026-04-16 21:22:16 +01:00
Matthew Leach
b9dc420aee libkernel: memory: paging: make PageTableEntry contain MAP_SHIFT
We currently define the MAP_SHIFT for a page-table level in two places,
`TableMapper` and `PgTable`. Store only one shift trait constant value
in the `PageTableEntry` trait.
2026-04-16 21:22:16 +01:00
Matthew Leach
ccffa50a0e libkernel: move paging-related arch-agnostic traits out of arch mod
Any traits which are architecture agnostic should be available to be
implemented by other architectures. Move them out from the arm64 module
into a non-architecure specific location.
2026-04-16 21:22:16 +01:00
Matthew Leach
465fcb7acb libkenrel: memory: move paging-related modules to paging module
Move PtePermissions to paging module which is feature-gated behind
`paging`.

Also move all AddressSpace related functionality behind the `proc_vm`
feature gate.
2026-04-16 21:22:16 +01:00
Ashwin Naren
dbc01b8977 fix issues for systemd bringup 2026-04-14 16:16:30 -07:00
Matthew Leach
3f87c1f3d9 libkernel: add feature gates
Add feature gates for different libkernel features. Specifically:

 - alloc: Memory allocation APIs.
 - paging: Paging related types & functions.
 - fs: Filesystem implementations.
 - proc_vm: Process VM management.
 - kbuf: Circular, page-backed, kernel buffer.

Also gate crate dependencies bsaed upon selected features.
2026-04-13 11:37:57 -07:00
Ashwin Naren
07c1739654 implement setuid, setgid, setreuid, setregid, setresuid, setresgid 2026-04-12 09:57:01 -07:00
Ashwin Naren
4f691d3e60 handle timeout, writefds, and mask correctly in pselect6 2026-04-04 19:45:43 -07:00
Matthew Leach
7984272376 Merge pull request #271 from arihant2math/ext4plus-bump
Use as_any to downcast inodes for updating in ext4
2026-04-03 08:53:40 +01:00
Matthew Leach
d0e77a883d Merge pull request #276 from arihant2math/dont-leak-fd
sys_pipe2: prevent file descriptor leak on copy_to_user failure
2026-04-03 08:51:38 +01:00
Ashwin Naren
5da64ab419 memory info in /proc/pid/stat 2026-03-30 19:48:29 -07:00
Ashwin Naren
5dd4bb2bf8 proc_pid_stat add processor and num_threads 2026-03-30 11:32:43 -07:00
Ashwin Naren
92089907ee sys_pipe2: prevent file descriptor leak on copy_to_user failure 2026-03-30 11:10:01 -07:00
Ashwin Naren
e55a47d006 implement sched affinity syscalls 2026-03-29 09:35:19 -07:00
Ashwin Naren
7edfe622f5 Use as_any to downcast inodes at will and bump ext4plus 2026-03-23 21:52:36 -07:00
Matthew Leach
a3836bb88b thread_group: wait: separate out ptrace events from child events
ptrace 'child' events are treated differently during a wait than
'normal' child events.  Speciecially, a process that is being traced
receives events for all threads (all `Tid`s) from a process, rather than
the `Tgid`.

This fixes running strace on multi-threaded programs.
2026-03-23 17:30:08 +00:00
Matthew Leach
bf4d1dbac4 process: make Tid globally unique
Make the `Tid` globally unique, rather than `Tgid` creating a new number
space. This allows ptrace to differentiate between threads when using
`-f` on a program which spawns threads.
2026-03-23 06:08:21 +00:00
Ashwin Naren
bc4199db0b implement sendto for unix sockets 2026-03-21 01:27:11 -07:00
Ashwin Naren
4388408e75 allow for indication of sender in recv. 2026-03-21 01:27:11 -07:00
Ashwin Naren
53cd2d2bf3 initial message boundary implementation 2026-03-21 01:27:11 -07:00
Ashwin Naren
f49a3f9b65 implement getcpu(2) 2026-03-20 23:54:32 -07:00
Ashwin Naren
9ec0447c40 post-rebase fixes 2026-03-20 12:59:36 -07:00
Ashwin Naren
819e3671cc address review 2026-03-20 12:59:36 -07:00
Ashwin Naren
15628621d4 mount fixups 2026-03-20 12:59:36 -07:00
Ashwin Naren
a45367b833 mount implementation 2026-03-20 12:59:36 -07:00