Commit Graph

1414 Commits

Author SHA1 Message Date
Cautreoxit 43fc98dc77 Migrate virtio-input to input subsystem API 2025-10-28 17:37:13 +08:00
Cautreoxit ee960c5f45 Migrate i8042 keyboard to input subsystem API 2025-10-28 17:37:13 +08:00
Cautreoxit 329fb4728a Add framebuffer console handler 2025-10-28 17:37:13 +08:00
Cautreoxit 9c062b1350 Add input subsystem
Co-authored-by: TinaZhangZW <ruoyuan.zw@antgroup.com>
2025-10-28 17:37:13 +08:00
Ruihan Li 2d74e69b4b Add KDGKBMODE and KDSKBMODE ioctl support 2025-10-27 16:28:35 +08:00
Wei Zhang 2ba05a1673 Add KDGETMODE and KDSETMODE ioctl support
Add support for virtual console TTY mode management ioctls required by
Xorg and other display servers. The implementation includes:

- KDGETMODE: Query the current virtual console mode
- KDSETMODE: Switch between text and graphics modes

Virtual consoles utilize the framebuffer with two distinct modes:
- Text mode (default): Kernel renders text characters to framebuffer
- Graphics mode: User space applications gain full framebuffer control

Xorg requires KDSETMODE during initialization to switch to graphics
mode, preventing conflicts where both the kernel and Xorg would
simultaneously attempt to write to the framebuffer. This ensures
proper display handling and eliminates rendering artifacts.

Co-authored-by: Ruihan Li <lrh2000@pku.edu.cn>
2025-10-27 16:28:35 +08:00
Ruihan Li 38a217d201 Enhance `TtyDriver` to get the console 2025-10-27 16:28:35 +08:00
Wei Zhang 66d9dd41b9 Correct /dev/tty1 major number to 4
The major number for /dev/tty1 must be 4, as this value is hardcoded
in Linux and Linux syscall-compatible operating systems. Xorg uses
this major number directly, and incorrect values lead to confusion
and operational failures.

This change ensures compatibility with Xorg's expectations and
maintains system consistency.
2025-10-27 16:28:35 +08:00
Zejun Zhao f02c37dc2f Make writable pages readable on RISC-V platforms 2025-10-27 11:25:59 +08:00
Zejun Zhao 51767b519b Generate fault signal for RISC-V exceptions 2025-10-27 11:25:59 +08:00
Zejun Zhao 1e183825d3 Refactor RISC-V exception-related code 2025-10-27 11:25:59 +08:00
Zejun Zhao fe90e3051b Add fallback for RTC device 2025-10-27 09:50:46 +08:00
Ruihan Li 8a16aa3b86 Refine the `ProcessVm` structure 2025-10-26 10:14:00 +08:00
Ruihan Li badad44b54 Fix a small bug in remote memory access 2025-10-26 10:14:00 +08:00
Ruihan Li 54f2a25a3a Move remote memory access to the VM module 2025-10-26 10:14:00 +08:00
Ruihan Li b07d06170b Remove `Rights` from VMAR 2025-10-26 10:14:00 +08:00
Arthur Paulino 6a67807fd0 Implement `IdSet::iter_in`
This patch enables more expressive ways to slice and iterate over
the `Id`s in an `IdSet` with `IdSet::iter_in`, which takes an arbitrary
`IdSetSlicer`.

`IdSet::iter_in` efficiently slices out unintended inner parts and
then, within the remaining parts, skips inactive bits by using
`BitSlice::iter_ones` from the `bitvec` crate.

It also delivers several implementations of `IdSetSlicer` so OSTD
consumers can represent `Id` ranges ergonomically.

In the Asterinas kernel, `CpuSet::iter_in` enables a cleaner way to
define an interator that cycles over the CPUs.
2025-10-25 11:23:13 +08:00
Arthur Paulino 01d9b61337 Enhanced per-CPU load stats
This patch creates a `PerCpuLoadStats` with slightly enhanced, enough
to serve load stats and the load-balancing algorithm. This struct can
be further enhanced for more elaborated load-balancing algorithms in
the future.

The load stats report has been fixed, as `SchedulerStats::nr_queued_and_running`
no longer includes idle threads in the queued total nor in the running
threads.

Furthemore, the load-balancing algorithm has been improved because it
no longer accounts with the idle threads when they're enqueued.
2025-10-25 10:38:59 +08:00
jiangjianfeng fe39a6803d Unshare VM during execve 2025-10-25 10:36:30 +08:00
jiangjianfeng caeec3cdc1 Unshare signal handler during execve 2025-10-25 10:36:30 +08:00
jiangjianfeng 207bfe30e2 Support multithreaded execve 2025-10-25 10:36:30 +08:00
Zejun Zhao 8251d48bf2 Add RISC-V PLIC support 2025-10-24 16:28:41 +08:00
Chen Chengjun 0a80d55c95 Support mount bind a file 2025-10-24 11:13:09 +08:00
Chen Chengjun 53a1268e19 Add mountinfo files to proc filesystem 2025-10-24 11:12:16 +08:00
Chen Chengjun 7b68571290 Support generating the mount infomation 2025-10-24 11:12:16 +08:00
Tate, Hongliang Tian c44e45ea78 Add the `IdSet<I>` utility type 2025-10-22 14:29:52 +08:00
Ruihan Li 7e7ba43cdf Revise some error messages 2025-10-22 14:05:38 +08:00
Ruihan Li 9ac0e31981 Implement better FS path APIs 2025-10-22 14:05:38 +08:00
Chen Chengjun a22935f4c6 Correct the errno of waitid when the input pidfd is negative 2025-10-20 21:07:28 +08:00
Ruihan Li 8be8397a67 Make network callbacks and names related 2025-10-20 20:56:55 +08:00
Ruihan Li 582812ac92 Reorder `new_loopback` and `new_virtio` 2025-10-20 20:56:55 +08:00
Ruihan Li 74f23ce23d Fix some `kill`-related behavior 2025-10-20 14:05:45 +08:00
Ruihan Li 75edabc557 Construct `SignalSenderIds` from `Context` 2025-10-20 14:05:45 +08:00
Ruihan Li 43f50c5e2a Fix futex return values 2025-10-20 11:24:48 +08:00
Ruihan Li 52ddbeaff8 Use the `Arc<Waker>` address as the futex ID 2025-10-20 11:24:48 +08:00
Ruihan Li 34b4ad5e9b Clean up visibility in `futex.rs` 2025-10-20 11:24:48 +08:00
jiangjianfeng 600446e9e1 Cleanup ThreadName related code 2025-10-20 10:52:07 +08:00
Chen Chengjun 782301c239 Remove open-related APIs from FsResolver 2025-10-17 16:18:56 +08:00
Chen Chengjun c2ab393d57 Cleanup the lookup APIs of FsResolver 2025-10-17 16:18:56 +08:00
Ruihan Li bc6ef5231b Reorangize `ostd::arch::irq` 2025-10-16 21:46:40 +09:00
Wang Siyuan 3f2c319e00 Support `/proc/[pid]/mem` and `/proc/[pid]/task/[tid]/mem` 2025-10-15 16:34:32 +08:00
Wang Siyuan ef5e0060d7 Support reading `InitStack` across pages 2025-10-15 16:34:32 +08:00
Wang Siyuan c2adcf9944 Support accessing user spaces of other processes 2025-10-15 16:34:32 +08:00
Qingsong Chen 257b0c63b1 Fix ext2 block groups count 2025-10-14 13:20:06 +09:00
Ruihan Li 0be36ee2c1 Fix virtio-mmio interrupt handling 2025-10-14 00:48:09 +09:00
Ruihan Li 7b212a6a25 Check capabilities instead of the root 2025-10-13 14:21:27 +08:00
Chen Chengjun 07d2d1db02 Support MS_PRIVATE flag for mount 2025-10-13 13:30:06 +08:00
Chen Chengjun 2b18c893a8 Implement fixed_point module to replace the usage of fixed crate 2025-10-13 12:34:01 +08:00
Chen Chengjun d2b4664078 Add a configfs usage example in ktest 2025-10-09 17:38:08 +08:00
Chen Chengjun fc69af3e95 Support the basic configfs 2025-10-09 17:38:08 +08:00
Chen Chengjun 537f08d7cf Make the cgroup systree independent 2025-10-09 17:38:08 +08:00
Chen Chengjun 6dd4899d4a Supports multiple systree instances 2025-10-09 17:38:08 +08:00
Ruihan Li 7319a7b173 Add wakeups after moving children 2025-10-07 11:43:02 +08:00
Ruihan Li d50155661c Lock run queues with IRQ disabled 2025-10-07 11:43:02 +08:00
Ruihan Li 56d78ab649 Fix some minor style issues 2025-10-06 14:46:23 +08:00
Ruihan Li b4f66ab379 Fix free memory value in `meminfo` 2025-10-06 14:46:23 +08:00
Ruihan Li 78ff1a689b Fix wrong formats in `{uid,gid}_map` 2025-10-06 14:46:23 +08:00
jiangjianfeng d75a2481bb Support /proc/pid/uid_map and /proc/pid/gid_map 2025-09-30 16:42:54 +08:00
Ruihan Li d43fbd8f89 Fix some `getrandom` behavior 2025-09-30 11:36:37 +08:00
Ruihan Li 36a38c3f04 Bump `rand` version to 0.9.2 2025-09-30 11:36:37 +08:00
Ruihan Li 75f95cc1da Remove some unnecessary `cfg_if` uses 2025-09-30 11:36:37 +08:00
Ruihan Li b606e3456c Don't panic if `set_child_tid` is invalid 2025-09-30 09:54:40 +08:00
Ruihan Li 6336bb9fc8 Fix races when finding the reaper 2025-09-30 09:54:40 +08:00
Ruihan Li 8be5465ace Add more checks for `clone` 2025-09-30 09:54:40 +08:00
Zejun Zhao 294c55d0df Fix `semid_ds`'s layout on non-x86_64 platforms 2025-09-29 23:46:01 +08:00
jiangjianfeng 702aa7d9ee Support CLONE_PARENT flag 2025-09-29 13:27:22 +08:00
Zejun Zhao 899db770f6 Fix parameter passing of `preadv/pwritev`-family syscalls 2025-09-28 22:18:53 +08:00
Zejun Zhao b183f9c06d Fix `epoll_event`'s layout on non-x86_64 platforms 2025-09-28 22:16:19 +08:00
jiangjianfeng 6c544053af Set the default domainname as `(none)` 2025-09-28 09:35:39 +08:00
jiangjianfeng 882dea6125 Add syscall setdomainname 2025-09-28 09:35:39 +08:00
jiangjianfeng 87091aa19c Add syscall sethostname 2025-09-28 09:35:39 +08:00
Yang Zhichao 66356e133d Add support for `/proc/stat` and `/proc/uptime` 2025-09-27 21:02:23 +08:00
Yang Zhichao a13d2703fb Add context switch counting. 2025-09-27 21:02:23 +08:00
Yang Zhichao b921675426 Complete fork, vfork and clone counting.
This change primarily provides statistical data for the `processes` field in `/proc/stat`.
This field represents the total count of all processes and threads created since system boot,
rather than just processes as the name might imply.
2025-09-27 21:02:23 +08:00
Yang Zhichao a9673282e6 Complete the counting for Softirq and IRQ. 2025-09-27 21:02:23 +08:00
Yang Zhichao 6a662a0d85 Add the `CpuTimeStats` module for CPU time statistics. 2025-09-27 21:02:23 +08:00
Yang Zhichao f869ed508f Move `PerCpuCounter` to `aster-util` to broaden its scope of use,
and add/modify some methods to improve readability.
2025-09-27 21:02:23 +08:00
Chen Chengjun 9a99af1170 Fix some set uid behaviors 2025-09-26 15:14:29 +08:00
Chen Chengjun 728b8d1b5a Bypass some permission checks with DAC_OVERRIDE 2025-09-26 15:14:29 +08:00
Zejun Zhao 6a42bb3b4a Make syscall restart mechanism work across all architectures 2025-09-26 15:10:34 +08:00
Ruihan Li 4c26a7a7c5 Fix a typo in the PCI bar detection 2025-09-24 15:41:07 +08:00
Ruihan Li 472edcf795 Clean up unnecessary features 2025-09-24 15:41:07 +08:00
Ruihan Li 5a117bc859 Rewrite some error messages 2025-09-24 14:29:16 +08:00
Ruihan Li 89959d07df Fix/clarify problems about mount namespaces 2025-09-24 14:29:16 +08:00
Wang Siyuan 57d3d9ded1 Fix some `mprotect` issues 2025-09-24 11:14:13 +08:00
Chen Chengjun 4552fdb830 Introduce AtomicFileCreationMask 2025-09-24 08:07:25 +08:00
Chen Chengjun c56089309b Support CLONE_NEWNS for related syscalls 2025-09-24 08:07:25 +08:00
Chen Chengjun bacbe58ff3 Modify the related logics in the initial phase 2025-09-24 08:07:25 +08:00
Chen Chengjun 3de56817fe Introduce MountNamespace 2025-09-24 08:07:25 +08:00
jiangjianfeng 754ab5537c Add /dev/full device 2025-09-22 10:20:56 +08:00
Wang Siyuan 6dec3a6712 Replace `InodeMode::from_bits_trunucated` with `mkmod` 2025-09-22 10:20:36 +08:00
Wang Siyuan 51a055c467 Add macros `chmod` and `mkmod` 2025-09-22 10:20:36 +08:00
Yuke Peng 701b8f6f92 pci: Refactor ptr alignment 2025-09-21 10:32:23 +08:00
Yuke Peng ecdc8c3fe7 Remove unsafe in x86 PCI code 2025-09-21 10:32:23 +08:00
Yuke Peng a8070a62b6 Extract platform-specific code from ostd into PCI component 2025-09-21 10:32:23 +08:00
Yuke Peng bb15d4591a Extract `PciDeviceLocation` in ostd into PCI component 2025-09-21 10:32:23 +08:00
Yuke Peng f34c37f6c4 Acquire IoMem only when r/w happened 2025-09-21 10:32:23 +08:00
Yuke Peng d60e2e2a6b Align cap_ptr in PCI 2025-09-21 10:32:23 +08:00
Yuke Peng 48376efa52 Extract MSIX in ostd into PCI component 2025-09-21 10:32:23 +08:00
Yuke Peng 1e324d2228 Fix import error in PCI component 2025-09-21 10:32:23 +08:00
Yuke Peng 28d4d0e3ad Use `IoMem::acquire` to get the MemoryBar access 2025-09-21 10:32:23 +08:00
Yuke Peng faee9e9808 Disable IoPort read/write in IoBar 2025-09-21 10:32:23 +08:00
Yuke Peng 1a86bd2471 Move PCI bus in OSTD into PCI component 2025-09-21 10:32:23 +08:00
Yuke Peng f2d1cbdf57 Init PCI compoment 2025-09-21 10:32:23 +08:00
Ruihan Li 391f11f1aa Make per-CPU callbacks explicit 2025-09-20 11:50:50 +08:00
Ruihan Li 421f36cc26 Make timer callbacks arch-agnostic 2025-09-20 11:50:50 +08:00
Tate, Hongliang Tian 4b87dab86e Unify CPU arch-specific logic that determines if the kernel is interrupted 2025-09-19 15:05:50 +08:00
Tate, Hongliang Tian ee21f2bdb6 Refactor OSTD irq module for improved clarity 2025-09-19 15:05:50 +08:00
Tate, Hongliang Tian c485d512f6 Rename ostd::trap to ostd::irq 2025-09-19 15:05:50 +08:00
Zejun Zhao 2e46edb68d Register some timer callbacks on all CPUs 2025-09-19 14:40:33 +08:00
Zejun Zhao cf9c45a46c Implement renameat2 system call 2025-09-19 12:00:01 +08:00
Wang Siyuan 70b26f824d Support `RUSAGE_CHILDREN` option for `getrusage` 2025-09-18 17:20:07 +08:00
Ruihan Li c90c081e86 Fix bugs due to bad `ReadCString` APIs
Co-authored-by: Wang Siyuan <wsy@stu.pku.edu.cn>
2025-09-18 17:19:51 +08:00
Ruihan Li 3acdc1e8b0 Move `ReadCString` to `util/`
Co-authored-by: Wang Siyuan <wsy@stu.pku.edu.cn>
2025-09-18 17:19:51 +08:00
Ruihan Li d7334118f3 Respond error segments for netlink parse errors 2025-09-18 17:19:51 +08:00
Qingsong Chen 8bc0013801 Add stage support for init_component macro 2025-09-18 12:11:44 +08:00
Tate, Hongliang Tian 8d2fec7873 Introduce ASCII art representations of the Asterinas logo 2025-09-17 22:44:40 +08:00
Qingsong Chen f6a55e0af3 Handle 8-bit/24-bit ANSI color codes for framebuffer 2025-09-17 22:43:22 +08:00
Wang Siyuan 46aa437c87 Add `/proc/pid/oom_score_adj` 2025-09-15 13:28:23 +08:00
Wang Siyuan b42605af6b Support configurable file modes within procfs 2025-09-15 13:28:23 +08:00
Chen Chengjun c2a224e757 Fix the bug in is_mount_root method 2025-09-12 17:06:58 +08:00
Qingsong Chen 96adc3dc82 Add /proc/cmdline support 2025-09-12 08:45:32 +08:00
Chen Chengjun 8c36964bb9 Introduce VmPrinter to write kernel generated data 2025-09-10 21:07:14 +08:00
Chen Chengjun 12f2f6bb54 Correct the misuse of some AttributeErrors 2025-09-10 21:07:14 +08:00
Ruihan Li fe1d4fe15f Support UNIX datagram sockets 2025-09-10 20:01:30 +08:00
Ruihan Li 87640d4b27 Drop `UnixSocketAddrBound` on `close()` 2025-09-10 20:01:30 +08:00
Ruihan Li 286d4d4466 Reorder methods and fix minor issues 2025-09-10 20:01:30 +08:00
Ruihan Li 9de70e38de Add the `arch::cpu::cpuid` module 2025-09-10 12:10:40 +08:00
Ruihan Li 652657fba5 Drop duplicate public re-exports 2025-09-10 12:10:40 +08:00
Ruihan Li c1b80f0f0f Use `'static` for FS types 2025-09-08 14:40:08 +08:00
Ruihan Li ef5318c000 Rename `*FS` to `*Fs` 2025-09-08 14:40:08 +08:00
Ruihan Li bb6069d5bb Clean up some FS APIs 2025-09-08 14:40:08 +08:00
Ruihan Li c289f96d23 Report `ENOBUFS` if netlink messages overrun 2025-09-05 10:51:48 +08:00
Ruihan Li b57c94d05d Unpack `MessageQueue` 2025-09-05 10:51:48 +08:00
zhuowei shao f0935beb18 Extract futex double bucket locking operation 2025-09-05 10:49:45 +08:00
Zhe Tang 2796c8d1ad Add unit tests for the newly implemented methods related to `IoMem` 2025-09-05 10:47:43 +08:00
Zhe Tang b94ea9f174 Add kernel support for mapping via files 2025-09-05 10:47:43 +08:00
Zhe Tang 5022cadef1 Add the file-specific `mmap` interface
Co-authored-by: Wei Zhang <ruoyuan.zw@antgroup.com>
2025-09-05 10:47:43 +08:00
Zhe Tang 5a38c61c49 Ensure that OSTD users cannot modify the `PrivilegedPageFlags` in `PageProperty` 2025-09-05 10:47:43 +08:00
Ruihan Li 3b606f5b6c Use `size_of`/`align_of` in the prelude 2025-09-04 09:26:56 +08:00
Zhang Junyang 9e2d8e9f08 Use device addresses instead of physical addresses 2025-09-02 17:53:55 +08:00
Zhang Junyang 4e2bdc65de Refactor implicit `Arc` APIs for DMA 2025-09-02 17:53:55 +08:00
Zhang Junyang a6520880ab Unify memory object slicing 2025-09-02 17:53:55 +08:00
Zhang Junyang eb69aa4fb9 Unify address and size APIs for memory objects 2025-09-02 17:53:55 +08:00
Ruihan Li 419f31397f Move checks from `syscall/` to `iovec.rs` 2025-09-02 15:43:09 +08:00
Ruihan Li 4e27e9d90b Use "I/O" instead "IO" 2025-09-02 15:43:09 +08:00
jiangjianfeng ef099996fc Fix the unshare logic in syscall close_range 2025-09-02 09:47:41 +08:00
jiangjianfeng b43047eedb Add syscall setns 2025-09-02 09:47:41 +08:00
jiangjianfeng cca73480c2 Add syscall unshare 2025-09-02 09:47:41 +08:00
jiangjianfeng 83b6e2da5c Add basic namespace framework 2025-09-02 09:47:41 +08:00
jiangjianfeng 3cbc9b4bf7 openat should return ENOENT if path is empty 2025-09-02 09:45:42 +08:00
jiangjianfeng 09886fc15b Write the supported cap version to user if capget version is unsupported 2025-09-02 09:45:42 +08:00
jiangjianfeng 6c5bcc420a Don't panic on MADV_NOHUGEPAGE 2025-09-02 09:45:42 +08:00
Arthur Paulino f56d2f3bad `context.rs` enhancements
* Improve the phrasing of some docstrings and comments
* Add warning comments about attempts to validate memory addresses
  at reader/writer instantiation time
* Create the `reader_writer` method for ergonomically instantiate
  a reader/writer pair covering the same memory region. This method
  is also slightly more efficient than calling `reader` and `writer`
  separately
* Clean up `check_vaddr` for clarity and rename it to `check_vaddr_lowerbound`
  for explicity
* Include the data length check before calling `check_vaddr_lowerbound`
  in `atomic_load` and `atomic_fetch_update` for further consistency
  with the delayed buffer validation
2025-09-01 11:16:37 +08:00
Zejun Zhao f4b05597cd Init vDSO singleton in the first kthread 2025-08-31 23:57:17 +08:00
Chen Chengjun f8e4aefcca Add tmpfs support by wrapping ramfs 2025-08-29 15:45:20 +08:00
Yang Zhichao d84ad988d4 Implement `EnvironFileOps` to handle `/proc/[pid]/environ` 2025-08-29 10:07:29 +08:00
Zejun Zhao d3e27ae03a Use vDSO for fallback of user-provided sa_restorer on RISC-V platforms 2025-08-28 17:35:55 +08:00
jiangjianfeng 2098b11b68 Unify the implementation of /proc/[pid] and /proc/[pid]/task/[tid] 2025-08-27 15:22:08 +08:00
Arthur Paulino 888eecb350 Patch a futex vulnerability
If the futex wait operation was interrupted by a signal or timed out, the
`FutexItem` must be dequeued and dropped. Otherwise, malicious user programs
could repeatedly issue futex wait operations to exhaust kernel memory.

Due to asynchronicity, this removal can't be done by queue position nor by
futex key match up:
* The position might have changed during the pause as some earlier futex might
  have been dequeued
* If two futexes with the same key are enqueued and then one of them times out
  or is interrupted, a removal by key would likely dequeue the wrong futex

Therefore, we need to perform a removal by unique global futex ID.
2025-08-26 18:04:34 +08:00
Ruihan Li a6d37f0e79 Mark all kernel modules as private 2025-08-26 18:02:56 +08:00
Ruihan Li f35ae6fe1c Adjust visibility in `sem{,_set}.rs` 2025-08-26 18:02:56 +08:00
Ruihan Li 5c49142515 Remove `base` and `size` in `Vmar` 2025-08-26 18:02:56 +08:00
Ruihan Li a84897097e Remove `RangeLockItemBuilder` 2025-08-26 18:02:56 +08:00
Ruihan Li c9ac58e8df Remove unused "unregister" methods 2025-08-26 18:02:56 +08:00
Ruihan Li b2f17d11c6 Remove common enum suffixes 2025-08-26 18:02:56 +08:00
Ruihan Li 09e7355d87 Remove dead code in `file_table.rs` 2025-08-26 18:02:56 +08:00
Chen Chengjun b1bbd6c3fe Optimize the initialization logic during Asterinas init phase 2025-08-26 14:36:59 +08:00
Chen Chengjun a5c4566485 Include the VDSO library directly 2025-08-24 19:09:40 +08:00
Zejun Zhao 0a126a0c8c Set correct default value for VdsoData::mask 2025-08-23 12:38:22 +08:00
Zejun Zhao 47b05143cf Correct vDSO data segment's permission 2025-08-23 12:38:22 +08:00
Zejun Zhao e68631d1b6 Implement arch-aware vDSO 2025-08-23 12:38:22 +08:00
Ruihan Li a4aa745de1 Refine the lock usage in the vDSO module 2025-08-22 16:20:01 +08:00
Ruihan Li f457acdb8b Rewrite documentations in the vDSO module 2025-08-22 16:20:01 +08:00
Tao Su 226ea2865c Resolve `semget01` failure by fixing key limit and adding `IPC_STAT` 2025-08-20 19:57:14 +08:00
Ruihan Li 6b6c64c591 Rename `atomic_update` to `atomic_fetch_update` 2025-08-20 13:17:57 +08:00
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
王英泰 5c590f0c6b Add the process support for LoongArch in kernel 2025-07-25 17:37:24 +08:00
王英泰 3824af8c89 Add the trap section for LoongArch in OSTD 2025-07-25 17:37:24 +08:00
王英泰 91e7785915 Add the cpu section of LoongArch in OSTD and kernel 2025-07-25 17:37:24 +08:00
jiangjianfeng 9219207b97 Add CLONE_PIDFD & pidfd_open support 2025-07-24 21:11:24 +08:00
jiangjianfeng dbc6e7c71a Add support for `/proc/sys/kernel/pid_max` 2025-07-24 21:11:24 +08:00
Ruihan Li 5ccadb6253 Support SOCK_SEQPACKET 2025-07-23 20:02:15 +08:00
Ruihan Li c3572e9548 Support SCM_CREDENTIALS 2025-07-23 20:02:15 +08:00
Ruihan Li ab897ccd2f Support SO_PASSCRED
Co-authored-by: Jianfeng Jiang <jiangjianfeng.jjf@antgroup.com>
2025-07-23 20:02:15 +08:00
Qingsong Chen e86f7584a3 Fix atomic mode issue when VMO commit needs IO 2025-07-23 11:23:03 +08:00
Qingsong Chen eb64ca1cea Fix VMO commit address when needs IO 2025-07-23 11:23:03 +08:00
Cautreoxit 6ecccad3ee Add sys_ioprio_set and sys_ioprio_get 2025-07-22 17:22:52 +08:00
Cautreoxit 2e3d8ea867 Add extension support for keyboard 2025-07-22 15:16:12 +08:00
Cautreoxit b8b9d8bff6 Add release support for keyboard 2025-07-22 15:16:12 +08:00
YanWQ-monad 79335b272f Add coverage support
Co-authored-by: Marsman1996 <lqliuyuwei@outlook.com>
2025-07-22 10:31:56 +08:00
Chen Chengjun ef0382b164 Enhance waitid syscall support 2025-07-21 21:31:32 +08:00
Chen Chengjun 4d52241c6c Fix some definition errors of siginfo_t 2025-07-21 21:31:32 +08:00
Cautreoxit c6011b9650 Add fadvise64 syscall 2025-07-21 21:29:17 +08:00
Yang Zhichao 9570f14d80 Add AMD support for cache_size and tlb_size 2025-07-21 20:08:42 +08:00
Yang Zhichao d09c6c7584 Add a fallback to RDTSC estimation when TSC info is unavailable 2025-07-21 20:08:42 +08:00
Yang Zhichao 496c50f296 Fix get_cpuid_level function to directly return the CPUID 0x0 EAX value instead of TSC denominator 2025-07-21 20:08:42 +08:00
Yang Zhichao 85e605250b Fix cache line size calculation in get_clflush_size function 2025-07-21 20:08:42 +08:00
Marsman1996 62d426d9b7 Add check for empty directory and more forms of root directory in `rmdir` 2025-07-21 11:33:14 +08:00
Ruihan Li 4d8078166e Send and receive UNIX control messages 2025-07-21 10:46:08 +08:00
Qingsong Chen f1299d4b8d Save FPU context on signal stack 2025-07-18 11:40:16 +08:00