Commit Graph

1038 Commits

Author SHA1 Message Date
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