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
Qingsong Chen
6cd53fbb8a
Refactor FPU context using pre_schedule_handler
2025-07-18 11:40:16 +08:00
Chen Chengjun
749fe77591
Add an initial script to mount several file systems
2025-07-17 13:51:45 +08:00
Chen Chengjun
df69af324e
Forbid creating a directory in sysfs
2025-07-17 13:51:45 +08:00
Chen Chengjun
16292742d2
Leverage FsRegistry to remove the hardcode in mount syscall
2025-07-17 13:51:45 +08:00
Chen Chengjun
9783bbddda
Implement FsType for exsiting file systems
2025-07-17 13:51:45 +08:00
Chen Chengjun
cb1732706a
Introduce FsType and FsRegistry
2025-07-17 13:51:45 +08:00
Ruihan Li
cdd7950d2e
Remove some variants in `ostd::Error`
2025-07-15 23:05:30 +08:00
Chen Chengjun
d02202dc73
Support the basic cgroupfs
2025-07-14 20:35:05 +08:00
Chen Chengjun
19a3f5576d
Introduce the FsManager
2025-07-14 20:35:05 +08:00
Chen Chengjun
b90b79810c
Provide more powerful macros to assist in implementing the SysTree-related traits
2025-07-14 20:35:05 +08:00
Chen Chengjun
a8b4c23319
Add SysTreeInodeTy trait to abstract the view part of MVC arch
2025-07-14 20:35:05 +08:00
Chen Chengjun
774291611c
Add two error types in aster_systree::Error
2025-07-14 20:35:05 +08:00
Chen Chengjun
9c68d96fa2
Attach SysPerms to systree nodes and attributes
2025-07-14 20:35:05 +08:00
Chen Chengjun
e229eb379b
Enable getting path through SysObj
2025-07-14 20:35:05 +08:00
Ruihan Li
a5e927b675
Make the framebuffer backspace work
2025-07-14 20:24:29 +08:00
Ruihan Li
b1079c2bc5
Add support for font setting
2025-07-14 20:24:29 +08:00
Ruihan Li
9f82a0c89f
Clean up the console crate
2025-07-14 20:24:29 +08:00
jiangjianfeng
d317ce3246
Adjust `max_len` to avoid EFAULT when reading CString
2025-07-14 15:43:34 +08:00
jiangjianfeng
010da31b3e
Align execve argument limits with Linux
2025-07-14 15:43:34 +08:00
yuankunzhang
a4c918efd7
fs: validate workdir when creating overlayfs instance
...
The workdir needs to be an empty directory on the same filesystem
as upperdir.
2025-07-11 09:26:31 +08:00
jiangjianfeng
665de6bd35
Make RISC-V code compile under new exception APIs
2025-07-09 10:49:43 +08:00
jiangjianfeng
7f3ca86467
Refactor x86 exception related code
2025-07-09 10:49:43 +08:00
Chen Chengjun
2a34a041c4
Fix the mask set in the signalfd
2025-07-08 15:50:41 +08:00
js2xxx
1a12080c58
Fix integer overflow when updating vruntime after pending weight update
2025-07-05 18:23:17 +08:00
Ruihan Li
801ab865b7
Make paths of `TrapFrame` unique
2025-07-05 18:19:26 +08:00
Ruihan Li
0fce977b40
Clean up `trapframe` items
2025-07-05 18:19:26 +08:00
Wang Siyuan
37cc54f2aa
Store `offset` in `MappedVmo` instead of `range`
2025-07-03 18:54:53 +08:00
Ruihan Li
706f62e299
Support ANSI escape sequences
2025-07-03 17:47:56 +08:00
Ruihan Li
abbf152d74
Re-enable framebuffer
2025-07-03 17:47:56 +08:00
Ruihan Li
d73cbb5008
Clarify the `DeviceId` encoding
2025-07-03 14:30:14 +08:00
Wang Siyuan
a13297ae4c
Add fields in `/proc/*/stat` and `/proc/*/status`
2025-07-02 20:13:47 +08:00
Wei Zhang
513532fe95
Correctly handle partial writes and reads in writev and readv
...
When using writev or readv, if data is partially written or read, the
written or read bytes number should be returned instead of error.
2025-07-02 17:14:10 +08:00
Chen Chengjun
fe24c2d8ae
Ensure proper handling of out-of-bounds VMO access during page fault processing
2025-07-02 16:08:00 +08:00
js2xxx
4571fabc7a
Fix integer overflow due to fair weight change
2025-07-02 11:00:34 +08:00
Ruihan Li
6146434f15
Unify the styles of the `arch` modules
2025-06-30 15:43:41 +08:00
Qingsong Chen
5e3e23bf7c
Add basic i8042 keyboard support
2025-06-27 12:56:55 +08:00
Ruihan Li
3f1bf99b2a
Make `mremap` behavior consistent with Linux
2025-06-26 11:41:56 +08:00
Ruihan Li
079be2f30f
Enable syscall tests for UNIX sockets
2025-06-26 11:11:03 +08:00
Ruihan Li
bef9304c85
Fix minor problems of UNIX sockets
2025-06-26 11:11:03 +08:00
Wang Siyuan
810580bda5
Fix underflow when merging VMAs
2025-06-26 11:10:38 +08:00
jiangjianfeng
e4c5c36be9
Support SO_PEERCRED & SO_PEERGROUPS
2025-06-24 17:25:44 +08:00
jiangjianfeng
d7e88f93bd
Support SO_ACCEPTCONN
2025-06-24 17:25:44 +08:00
jiangjianfeng
ec8beab540
Support SO_PRIORITY
2025-06-24 17:25:44 +08:00
jiangjianfeng
8f6bc07b23
Support SO_SNDBUFFORCE & SO_RCVBUFFORCE
2025-06-24 17:25:44 +08:00
Ruihan Li
b891d7d215
Introduce `Endpoint` and `EndpointState`
2025-06-24 15:41:53 +08:00
Wang Siyuan
a0cbe7551a
Fix some user space address check
2025-06-24 12:15:24 +08:00
Wang Siyuan
f442cc6d81
Automatically merge adjacent and compatible `VmMapping`s
2025-06-24 12:15:24 +08:00
js2xxx
c5d57d5216
Fix mapping between `sched_attr` and `SchedPolicy`
2025-06-24 10:31:32 +08:00
Zhang Junyang
93015a6090
Make user program relocation code readable
2025-06-24 10:15:09 +08:00
Ruihan Li
35e0918bce
Don't race between enabling IRQs and halting CPU
2025-06-23 22:53:35 +08:00
Ruihan Li
b96c8f9ed2
Make `ostd::trap::irq` public
2025-06-23 22:53:35 +08:00
Ruihan Li
751e0b2ebf
Don't jump to the end of the cursor range
2025-06-23 10:54:30 +08:00
Ruihan Li
1c423d6b6d
Unwrap some unreachable errors
2025-06-23 10:54:30 +08:00
Hsy-Intel
65fd1aac81
Sync CVM guest feature dependencies between kernel and virtio components
2025-06-23 10:32:09 +08:00
Marsman1996
826f56aeed
Check file_table in PID directory before access
2025-06-22 17:58:33 +08:00
Marsman1996
1c56fbc871
Fix unwrap panic of dropped VMAR in PID status
2025-06-22 17:58:33 +08:00
Wang Siyuan
11f9675f37
Support the system call `mremap`
2025-06-21 16:18:09 +08:00
Wang Siyuan
33345f184a
Count RSS when dropping `RssDelta`
2025-06-21 16:18:09 +08:00
Marsman1996
bb3f21b41e
Fix integer overflow in futex wake
2025-06-20 15:58:19 +08:00
jiangjianfeng
95faea0fb0
Support WSTOPPED and WCONTINUED
2025-06-20 11:51:44 +08:00
Ruihan Li
bcf1e69878
Expose `head`/`tail` of `RingBuffer`
2025-06-19 16:30:02 +08:00
Ruihan Li
a3c5ab8cb4
Move virtio-mmio bus outside OSTD
2025-06-19 15:10:42 +08:00
Marsman1996
2f097ab8f8
Check file_table before use
2025-06-18 17:28:28 +08:00
Ruihan Li
4a9977d9a7
Make zero reads/writes' behavior right
2025-06-17 16:09:33 +08:00
Ruihan Li
837f908690
Fix some pollee mistakes
2025-06-17 16:06:48 +08:00
Marsman1996
5a514f6163
Check `VSOCK_GLOBAL` when creating `VsockStreamSocket`
2025-06-16 14:43:17 +08:00
Qingsong Chen
ef7fdc6647
Fix improper handling of O_TRUNC for non-regular files
2025-06-16 12:10:58 +08:00
Wang Siyuan
d5b12532a8
Require `T: Send` for `CpuLocal<T, S>`
2025-06-16 12:09:13 +08:00
Chen Chengjun
627dd0386b
Enable FUTEX_WAKE_OP
2025-06-16 11:02:17 +08:00
Chen Chengjun
860bb6c07f
Adjust and correct parts of the futex implementation code
2025-06-16 11:02:17 +08:00
Zhang Junyang
45059bad21
Create a new PT rather than clearing it upon `exec*`
2025-06-16 10:18:19 +08:00
Zhang Junyang
525085ab86
Implement system call `msync`
2025-06-15 16:25:37 +08:00
Ruihan Li
796635486c
Handle broken netlink attributes
2025-06-13 11:27:22 +08:00
Ruihan Li
deab9b6f72
Truncate netlink messages
2025-06-13 11:27:22 +08:00
Ruihan Li
0e8106abfa
Restrict visibility for TCP internals
2025-06-13 11:07:11 +08:00
Ruihan Li
639bc91e31
Clean up public re-exports under `net/`
2025-06-13 11:07:11 +08:00
Zhang Junyang
86a7aa09eb
Improve exception handling panic message
2025-06-13 10:35:47 +08:00
Wang Siyuan
b605bed576
Fix some typos
2025-06-12 22:35:54 +08:00
Zhang Junyang
e78927b449
Manage frame tracking outside the page table
2025-06-12 22:34:46 +08:00
Zhang Junyang
22ccfb1f2b
Move COW out of OSTD
2025-06-12 22:34:46 +08:00
Ruihan Li
0661a0656b
Never queue an ignored signal
2025-06-12 16:15:53 +08:00
Cautreoxit
3e32a38316
Add sys_close_range
2025-06-11 19:56:12 +08:00
Ruihan Li
71e08b3942
Clean up TTY termios definitions
2025-06-10 14:30:02 +08:00
Marsman1996
8583eea62b
Fix unreachable error in sys_timer_settime
2025-06-10 11:22:50 +08:00
Marsman1996
9109741e8b
Add TFDSetTimeFlags and fix reachable panic
2025-06-10 11:22:50 +08:00
Cautreoxit
0b471ef370
Add sys_epoll_pwait2
2025-06-09 20:20:40 +08:00
jiangjianfeng
597139a7f7
Fix a clippy error
2025-06-09 17:22:14 +08:00
Cautreoxit
e9f35f6ab8
Debug for try_from impl for Duration
2025-06-09 14:51:05 +08:00
Ruihan Li
fe6b78058c
Correct the blocking behavior
2025-06-09 13:10:34 +08:00
Ruihan Li
67065835ef
Redefine the TTY driver interface
2025-06-09 13:10:34 +08:00
Ruihan Li
5a9a63e1a7
Use one lock for `LineDiscipline`
2025-06-09 13:10:34 +08:00
Ruihan Li
45258d0475
Unpack `LineDiscipline` from `Arc`
2025-06-09 13:10:34 +08:00
Ruihan Li
9e2dde5ebb
Add `enqueue_signal_async`
2025-06-09 13:10:34 +08:00
Chen Chengjun
c56aee92f4
Re-organize some systree-related code
2025-06-09 11:13:48 +08:00
Chen Chengjun
a67bd8cdc9
Add macros to help implementing SysObj trait
2025-06-09 11:13:48 +08:00
Chen Chengjun
1dd1c8c775
Enable read and write operations of the attribute to handle offset
2025-06-09 11:13:48 +08:00
Chen Chengjun
3b1248ba7c
Fix some potential bugs of sysfs
2025-06-09 11:13:48 +08:00
Marsman1996
01328ee404
Fix panic when mount with invalid file system type
2025-06-06 18:26:24 +08:00
jiangjianfeng
f0957d2f54
Fix clippy warnings in kernel crate
2025-06-06 18:22:09 +08:00
Cautreoxit
2e3de6218f
Add more features for statx syscall
2025-06-06 15:07:20 +08:00
jiangjianfeng
f946f09ee4
Implement netlink uevent socket
2025-06-06 11:33:09 +08:00
Wang Siyuan
58e4f45bb1
Add per-CPU counters and track RSS for each `Vmar`
2025-06-03 23:24:32 +08:00
Wang Siyuan
dfd3042276
Add dynamically-allocated CPU-local objects
2025-06-03 23:24:32 +08:00
Zejun Zhao
3790f616fd
Rename `PageProperty::new` to `PageProperty::new_user`
2025-06-03 18:42:53 +08:00
Ruihan Li
c73892c704
Mark `pub(super)` for internal methods
2025-06-01 15:06:53 +08:00
Ruihan Li
14388da548
Remove guard generics from `xarray::Cursor`
2025-06-01 15:06:53 +08:00
Zejun Zhao
ffb4097436
Add RISC-V timer support
2025-05-29 19:51:02 +08:00
Ruihan Li
63daf69e17
Fix incorrect types in `sys_getcpu`
2025-05-29 10:33:02 +08:00
Ruihan Li
56e9824dd1
Make `current_cpu_racy` a method of `CpuId`
2025-05-29 10:33:02 +08:00
Zhang Junyang
79b3f68892
Make the RCU lifetime of page tables explicit
2025-05-24 17:42:17 +08:00
Zhang Junyang
54fbdcf059
Implement the stray marking in PT to ensure serializability
2025-05-24 17:42:17 +08:00
Zhang Junyang
5b7637eac3
Remove the activation lock and use RCU to protect PT removal
2025-05-24 17:42:17 +08:00
Qingsong Chen
189daa2e09
Fix the return value of `read_link` for ext2
2025-05-23 10:17:08 +08:00
stuuupidcat
95744692a5
Remove unnecessary #[inline] attributes
2025-05-22 12:19:21 +08:00
Zhang Junyang
02463ff161
Bump xmas-elf
2025-05-12 22:00:13 +08:00
Ruihan Li
d5c7a8bae3
Allow non-leaders to operate jobs
2025-05-12 16:09:43 +08:00
Zhang Junyang
773b965767
Allow specifying orderings when loading/storing `AtomicCpuSet`s
2025-05-11 15:29:17 +08:00
Ruihan Li
ff907d1131
Implement race-free job control
2025-05-09 17:12:31 +08:00
Ruihan Li
6f20cfbe69
Move fields from PTY master to slave
2025-05-09 17:12:31 +08:00
jiangjianfeng
89e8cd5936
Move functions related to spawning the init process to a seperate module
2025-05-09 13:19:57 +08:00
Ruihan Li
50ba735e96
Handle negative P(G)IDs via `cast_(un)signed`
2025-05-09 11:38:01 +08:00
Ruihan Li
d0719efcb4
Clarify some API usages
2025-05-06 18:47:10 +08:00
Ruihan Li
a993264265
Refactor and test `get{pgid,sid}`
2025-05-06 18:47:10 +08:00
Ruihan Li
7e4509df9c
Refactor and test `set{pgid,sid}`
2025-05-06 18:47:10 +08:00
Ruihan Li
5e13e0c325
Resolve lints in the TTY module
2025-05-06 11:55:06 +08:00
Ruihan Li
7de9666e65
Retire incomplete features
2025-05-06 11:17:20 +08:00
Ruihan Li
54bd64269b
Rename `systree` to `aster-systree`
2025-05-03 18:22:11 +08:00
Ruihan Li
f720c05706
Fail the CI if workspace lints are not enabled
2025-05-03 18:22:11 +08:00
Chen Chengjun
725a46fe72
Modify VMO usages and fix the atomic-mode issue during handling page fault
2025-04-30 20:59:15 +08:00
Chen Chengjun
af2a7f7497
Refactor the APIs of VMO based on the new XArray
2025-04-30 20:59:15 +08:00
Chen Chengjun
ac1de89d31
Add the default mark type for LockedXArray
2025-04-30 20:59:15 +08:00
Qingsong Chen
88f08de3af
Refactor framebuffer
2025-04-29 19:48:45 +08:00
Chen Chengjun
1775bb0861
Support for timerfd-related syscalls
2025-04-25 16:33:46 +08:00
Shaowei Song
f38f476c3b
Add support for mounting OverlayFS
2025-04-24 20:07:06 +08:00
Shaowei Song
914237e9ca
Add basic OverlayFS implementation
2025-04-24 20:07:06 +08:00
Fabing Li
63831dc2df
Add ktest cases
2025-04-24 20:03:54 +08:00
Fabing Li
79b0866259
Add sysfs implementation
2025-04-24 20:03:54 +08:00
Zhenchen Wang
3a5f270ee9
Made some minor improvements to syscall statx
...
Signed-off-by: Zhenchen Wang <m202372036@hust.edu.cn>
2025-04-23 20:39:54 +08:00
Zhenchen Wang
9e729593e8
Add syscall faccessat2
...
Signed-off-by: Zhenchen Wang <m202372036@hust.edu.cn>
2025-04-23 20:39:54 +08:00
Ruihan Li
26253829bb
Use `datagram_common` in netlink
2025-04-23 20:37:40 +08:00
Ruihan Li
c9f939bcc4
Create `datagram_common` and use it in UDP
2025-04-23 20:37:40 +08:00
Ruihan Li
96e62b8fa5
Reorder socket locks
2025-04-23 20:37:40 +08:00
jiangjianfeng
961ad73847
Poll the correct iface in irq handler
2025-04-23 00:32:37 +08:00
jiangjianfeng
8815ca384f
Add syscall ppoll
2025-04-21 11:19:48 +08:00
Chen Chengjun
1fe0fef410
Add ktests for the XArray
2025-04-19 16:48:15 +08:00
Chen Chengjun
c3dd607777
Introduce RCU-based XArray
2025-04-19 16:48:15 +08:00
Ruihan Li
81b79dacc6
Remove `read*_to_end` methods
2025-04-18 14:17:37 +08:00
Zejun Zhao
1c881d30f6
Add RISC-V build CI
2025-04-18 13:26:16 +08:00
Zejun Zhao
3aa1079ca6
Clarify the usage of ostd::arch
2025-04-18 13:26:16 +08:00
Zejun Zhao
14b8c48859
Adjust RISC-V's implementation for recent changes
2025-04-18 13:26:16 +08:00
Zejun Zhao
e4aa261c48
Make if_tdx_enabled macro x86-specific
2025-04-18 13:26:16 +08:00
Zhenchen Wang
7ac4fa9519
Add syscall statx
...
Signed-off-by: Zhenchen Wang <m202372036@hust.edu.cn>
2025-04-18 09:36:50 +08:00
Ruihan Li
d6e40933b8
Move the log lock to a better location
2025-04-16 21:59:24 +08:00
Zhang Junyang
85d4cdbbb0
Avoid excessive heap allocations in `sys_futex`
2025-04-15 21:56:15 +08:00
jiangjianfeng
5d84ac7775
Generate kernel response to user request
2025-04-15 17:20:12 +08:00
jiangjianfeng
3e66732889
Parse netlink message
2025-04-15 17:20:12 +08:00
jiangjianfeng
ac42e83387
Add basic structure for netlink route socket
2025-04-15 17:20:12 +08:00
jiangjianfeng
2c41055470
Expose more methods on bigtcp iface
2025-04-15 17:20:12 +08:00
jiangjianfeng
7d24e63216
Move network polling code to bottom half
2025-04-15 14:54:51 +08:00
jiangjianfeng
9804f053f2
Add guard which disables bottom half
2025-04-15 14:54:51 +08:00
Ruihan Li
a1f81df263
Remove `ostd/src/mm/offset.rs`
2025-04-15 09:15:22 +08:00
Ruihan Li
8600278a5f
Drop files at the correct time
2025-04-14 21:13:11 +08:00
Ruihan Li
7e1abc1fbb
Rename `ProcessVmarGuard::get` to `unwrap`
2025-04-14 21:13:11 +08:00
Ruihan Li
293f1ff4c9
Do `release_range_locks` in `Drop`
2025-04-14 21:13:11 +08:00
Chen Chengjun
a21e895102
Enable RCU to read reference to stored pointers
2025-04-10 14:42:51 +08:00
jiangjianfeng
b833ec6ede
Implement ReadCString for MultiRead
2025-04-09 16:47:11 +08:00
Ruihan Li
ceb79ea27a
Always move zombie children to init
2025-04-07 13:01:22 +08:00
Chen Chengjun
e4f07b76a0
Add real vfork logics
2025-04-03 14:44:39 +08:00
le-monde-bleu
43e43ca133
Add vfork syscall and related clone flags
2025-04-03 14:44:39 +08:00
Ruihan Li
0bbd56ecf3
Don't panic for missing virtio-net
2025-04-02 11:33:51 +08:00
jiangjianfeng
1846c680fc
Clone the reader to prevent cursor misplacement in `ReadCString`
2025-03-31 14:00:04 +08:00
Shaowei Song
2af71ff72a
Add xattr support for ext2
2025-03-28 15:08:59 +08:00
Shaowei Song
97c27e8d2a
Add xattr support for ramfs
2025-03-28 15:08:59 +08:00
Shaowei Song
a47eda413c
Add extended attribute (xattr) syscalls: setxattr, getxattr, listxattr and removexattr
2025-03-28 15:08:59 +08:00
Cautreoxit
b4a1dc03f3
Delete useless visibility for BARs
2025-03-27 18:44:15 +08:00
Cautreoxit
4fff7cdc22
Add an API for BioRequest to return the number of sectors
2025-03-26 10:38:24 +08:00
Cautreoxit
7a8afd8c48
Add a empty line after the license
2025-03-25 19:47:55 +08:00
jiangjianfeng
0e1c660225
Make VmReader's several methods accept `&mut self`
2025-03-25 14:25:08 +08:00
Yuke Peng
1f03955f51
Change IoMem directory
2025-03-22 17:38:30 +08:00
Zhang Junyang
4f0acddfd4
Strict TLB coherence
2025-03-21 21:19:50 +08:00
Zhang Junyang
30ec0be210
Halt the idle CPUs
2025-03-21 21:19:50 +08:00
Zhang Junyang
f1c7564184
Move CPU context implementations to a specific module
2025-03-21 21:19:50 +08:00
Zhang Junyang
298a205da2
Avoid an `Arc::clone` in `mmap` to make it scale
2025-03-21 20:09:42 +08:00
Zhang Junyang
f9284d3803
Workaround the missing process of a thread
2025-03-21 18:05:10 +08:00
Fabing Li
bce23a63bd
Add sys_signalfd/sys_signalfd implementation
2025-03-21 16:10:55 +08:00
Ruihan Li
bb1b41b413
Fix dead code lints
2025-03-21 16:00:35 +08:00
Hsy-Intel
49e6cd2712
Use macro to handle TDX-related code
2025-03-20 17:25:22 +08:00
Chen Chengjun
135100a472
Modify the getting-VMAR usages in other syscalls
2025-03-20 14:20:47 +08:00
Chen Chengjun
048fd1077c
Inject post_schedule/user_page_fault handler to OSTD
2025-03-20 14:20:47 +08:00
Chen Chengjun
2a20f6b59a
Add mutable functionality to the process VMAR
2025-03-20 14:20:47 +08:00
Chen Chengjun
248b24fb4e
Remove UserSpace abstraction from OSTD
2025-03-20 14:20:47 +08:00
Ruihan Li
d9f3a7761a
Notify socket events directly
2025-03-20 11:44:47 +08:00
Ruihan Li
2f66f5d234
Revert "Set hash buckets as 2 to work around performance bottleneck"
...
This reverts commit 631ab21838 .
2025-03-20 11:44:47 +08:00
Ruihan Li
7f323ac501
Don't remove TIME-WAIT sockets
2025-03-20 11:44:47 +08:00
Ruihan Li
240192f735
Make connection addition and deletion in order
2025-03-20 11:44:47 +08:00
Ruihan Li
a7e718e812
Avoid `O(n)` iteration when sending TCP packets
2025-03-20 11:44:47 +08:00
Zejun Zhao
73e0b30785
Eliminate redundant check in hot path
2025-03-20 10:45:16 +08:00
Zejun Zhao
c1e6f9a552
Eliminate redundant Clone in hot path
2025-03-20 10:45:16 +08:00
Zhang Junyang
288942b970
Revise the docs of the slab and remove an unused type
2025-03-14 21:17:47 +08:00
Zhang Junyang
a708a0c046
Inject a scalable slab allocator
2025-03-14 19:55:00 +08:00
jiangjianfeng
d366043876
Enable sig_action test from gVisor test
2025-03-14 16:09:11 +08:00
jiangjianfeng
7e96810e1a
Remove trampoline code in handling user kernel
2025-03-14 16:09:11 +08:00
Zhang Junyang
5f05963ee5
Inject a scalable buddy system allocator to OSTD
...
Co-authored-by: Zhe Tang <tangzh@stu.pku.edu.cn>
2025-03-14 08:37:37 +08:00
Zejun Zhao
455b8abba0
Adopt a round-robin strategy to select among equally idle CPUs
2025-03-13 16:28:02 +08:00
Hsy-Intel
7b5f2c414a
Use the latest tdx-guest crate version to fix the TDX init issue
2025-03-13 12:56:46 +08:00
Ruihan Li
d40d452e9d
Receive RST packets as `ECONNRESET` errors
2025-03-10 18:08:08 +08:00
Ruihan Li
aa29640ed7
Send RST packets when appropriate
2025-03-10 18:08:08 +08:00
Ruihan Li
eef56c770b
Simplify the TCP state check
2025-03-10 18:08:08 +08:00
Hsy-Intel
9edee83ef1
Use the latest tdx-guest crate version to fix the MMIO emulation issue
2025-03-10 17:58:35 +08:00