Commit Graph

1305 Commits

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