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