Arthur Paulino
a73f210c7a
Make `wake_robust_futex` atomic
...
Replace `VmWriter::atomic_update` with `VmWriter::atomic_compare_exchange`,
which takes the old value for comparison and new value instead of a
closure to compute it. This version has one less unsafe call.
Then use `atomic_compare_exchange` to reimplement the looping logic
of `wake_robust_futex` and make it atomic.
2025-08-19 19:22:12 +08:00
Chen Chengjun
fc5a12356a
Fix LOONGARCH clippy warnings
2025-08-19 19:20:54 +08:00
Chen Chengjun
9507475102
Fix RISCV clippy warnings
2025-08-19 19:20:54 +08:00
Zhang Junyang
1452aab69c
Optimize the space for `TlbFlushOp`s
2025-08-16 22:09:29 +08:00
Arthur Paulino
c31c6110f6
chore: use `jhash` to compute the `FutexKey` hash
...
This patch pays the price of making the instantiation of `FutexKey`
more expensive to achieve two goals:
* Minor: make `match_up` slightly faster
* Major: make futex bucket allocation balancing more robust
2025-08-16 09:16:50 +08:00
Arthur Paulino
91351e338f
fix: avoid distribution skew in `FutexBucketVec::get_bucket`
...
Doing `addr / self.size()` before masking with `(self.size() - 1)`
removes the low bits entirely, which causes adjacent addresses
(modulo `self.size()`) to map to the same bucket, entailing bad
load balance. This patch solves that.
Further, make `FutexBucketVec::new` and `FutexBucketVec::get_bucket`
private, as they only make sense within the scope of `futex.rs`,
where the invariant of `size` being a power of two is guaranteed to
hold via `get_bucket_count` (which is also private).
2025-08-16 09:16:50 +08:00
Arthur Paulino
c345876bc0
chore: avoid several `FutexKey` copies
...
Use shared references instead of copied objects on some functions
that don't necessarily require ownership of `FutexKey`.
Remove the `Copy` derivation of `FutexKey` to discourage suboptimal
copies.
2025-08-16 09:16:50 +08:00
Tao Su
c15106734a
Align `MS_ASYNC` and `MS_SYNC` flags with Linux behavior
2025-08-14 20:01:36 +08:00
Ruihan Li
5b91064316
Add a method that disables page fault handlers
2025-08-14 11:59:05 +08:00
Ruihan Li
e4fafb13b1
Add atomic operations for VM readers/writers
2025-08-14 11:59:05 +08:00
Ruihan Li
086a80c05f
Drop unsound TLS methods from `Task`
2025-08-12 19:19:34 +08:00
Ruihan Li
923982c2e5
Remove `user_ctx` from `Task`
2025-08-12 19:19:34 +08:00
Zejun Zhao
60bc63b0e2
Refine system call tables
2025-08-12 17:03:44 +08:00
Chen Chengjun
25d217397a
Rename MountNode to Mount
2025-08-12 15:20:17 +08:00
Chen Chengjun
32ee4a41f1
Refine visibility
2025-08-12 15:20:17 +08:00
Chen Chengjun
e155057d55
Move all mount operation interfaces to Path
2025-08-12 15:20:17 +08:00
Chen Chengjun
aea4013a43
Fix the mountpoint state maintaining for Dentry
2025-08-12 15:20:17 +08:00
Chen Chengjun
ae32062e77
Avoid passing self when calling internal mount methods within Path
2025-08-12 15:20:17 +08:00
Chen Chengjun
9985d64535
Complete some remaining rename tasks
2025-08-12 15:20:17 +08:00
jiangjianfeng
9a56028afc
Support parsing shebang with multiple arguments in intepreter line
2025-08-12 11:23:30 +08:00
Ruihan Li
cdd28787ed
Replace `write_vals` by `fill_zeros` in `VmIo`
2025-08-10 16:40:11 +08:00
Ruihan Li
2700d88bef
Provide efficient `VmIo` with VM readers/writers
2025-08-10 16:40:11 +08:00
Ruihan Li
aa7aca3dde
Add `VmWriter::fill_zeros`
2025-08-10 16:40:11 +08:00
Tate, Hongliang Tian
f2ead0b3ed
Remove O_TMPFILE flag because it is not really supported
2025-08-09 16:26:50 +08:00
jiangjianfeng
f6478d62cc
Refactor the implementation about sigstack
2025-08-08 12:06:26 +08:00
Ruihan Li
c19c7765d8
Fix race conditions in `pause_timeout`
2025-08-06 17:17:34 +08:00
Ruihan Li
20893be80e
Allow to receive empty SEQPACKET packets
2025-08-06 17:17:34 +08:00
Chen Chengjun
c6a6e66aac
Rename Dentry to Path in the other modules and rename some local variables
2025-08-06 14:06:39 +08:00
Chen Chengjun
6aa516e2bf
Move Path to mod.rs of the path module
2025-08-06 14:06:39 +08:00
Chen Chengjun
34dac93175
Rename Dentry and Dentry_ in the path module
2025-08-06 14:06:39 +08:00
jiangjianfeng
de97644b4c
Move `ThreadFsInfo` from `PosixThread` to `ThreadLocal`
2025-08-06 13:38:42 +08:00
Zhang Junyang
afe63e7123
Fix ELF loading when shebang/loader path is too long/far
2025-08-05 15:42:13 +08:00
Wang Siyuan
3ebb5a25b2
Refactor task schedulers to conform with the new semantics
2025-08-05 13:37:01 +08:00
Wang Siyuan
48fa40bbf2
Support the system call `memfd_create`
2025-07-31 09:29:12 +08:00
Wang Siyuan
59ceb6d27c
Add a method `inode` for `FileLike`
2025-07-31 09:29:12 +08:00
Tate, Hongliang Tian
659f079c2d
Revise the doc of OSTD's scheduling module
2025-07-29 21:58:23 +08:00
Ruihan Li
d73f1016a1
Set softfloat targets for ARM/LoongArch/RISC-V
2025-07-29 11:13:59 +08:00
Wei Zhang
8a801676ab
Disallow masking SIGKILL and SIGSTOP in user space
...
According to the Linux man pages[1], "It is not possible to block SIGKILL
or SIGSTOP. Attempts to do so are silently ignored." This patch ensures
compliance by explicitly removing SIGKILL and SIGSTOP from the signal
mask in the `MaskOp::SetMask` operation of the `rt_sigprocmask` syscall.
[1]: https://www.man7.org/linux/man-pages/man2/sigprocmask.2.html
2025-07-28 17:08:10 +08:00
Yuke Peng
2154124dc4
Format the user exception log
2025-07-28 15:01:49 +08:00
Ruihan Li
e52634cb78
Add some references for signal-related types
2025-07-28 10:50:38 +08:00
Ruihan Li
83b0564c99
Remove TLS-related stuffs from `LinuxABI`
2025-07-28 10:50:38 +08:00
jiangjianfeng
28d5d94c8c
Support setting reuseaddr for UDP socket
2025-07-28 10:20:50 +08:00
jiangjianfeng
ff39f6df75
Correct the reuseaddr behavior
2025-07-28 10:20:50 +08:00
王英泰
345cc9d055
Save FPU context on signal stack for LoongArch
2025-07-25 17:37:24 +08:00
王英泰
434d75c0f0
Cancel the use of floating-point instructions in kernel log
2025-07-25 17:37:24 +08:00
王英泰
fc72398fbc
Change the method to identify the legacy virtio device
2025-07-25 17:37:24 +08:00
王英泰
cc280272cc
Add the RTC time comps for LoongArch
2025-07-25 17:37:24 +08:00
王英泰
5c4b3fdd19
Finish the arch section for LoongArch in kernel
2025-07-25 17:37:24 +08:00
王英泰
4562361ef0
Add the random support for LoongArch in kernel
2025-07-25 17:37:24 +08:00
王英泰
5ca18b31ad
Add the syscall support for LoongArch in kernel
2025-07-25 17:37:24 +08:00