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