Commit Graph

202 Commits

Author SHA1 Message Date
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
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
Ruihan Li aa29640ed7 Send RST packets when appropriate 2025-03-10 18:08:08 +08:00
Wang Siyuan eca3c8fb59 Refactor RLimit64 to atomic 2025-03-06 11:22:05 +08:00
Chen Chengjun 801eac9386 Support PR_SET/GET_CHILD_SUBREAPER for sys_prctl 2025-03-03 19:31:50 +08:00
Ruihan Li 18e0eae331 Never expose `ERESTARTSYS` to the userspace 2025-02-23 23:11:05 +08:00
Ruihan Li 8187fa2f1b Fix timeout mechanism in `wait_events` 2025-02-23 23:11:05 +08:00
Ruihan Li 2411ba671c Reapply "Make `pause_timeout` return `EINTR`"
This reverts commit 7a017faa44.
2025-02-23 23:11:05 +08:00
Zejun Zhao d71771e49a Re-enable CFS 2025-02-11 10:51:12 +08:00
Ruihan Li 0dca168717 Use `#[expect(lint)]`, not `#[allow(lint)]` 2025-02-08 15:10:04 +08:00
Ruihan Li b415538097 Remove useless `#[allow(lint)]` 2025-02-08 15:10:04 +08:00
Ruihan Li b9ce3e64ad Make the file lookup faster 2025-01-09 10:58:16 +08:00
Zhang Junyang cdac59beda Implement a new set of physical page APIs 2024-12-27 12:12:51 +08:00
Marsman1996 5df8d59563 Exit when handle_user_signal fail 2024-12-26 18:33:32 +08:00
anbo225 e75b6320ad Add support for group-based permission checking in ext2 2024-12-26 17:07:55 +08:00
Ruihan Li 0bfe7aceb8 Utilize `ThreadLocal` 2024-12-26 14:51:20 +08:00
Marsman1996 9753d796c5 Add overflow check for futex_addr 2024-12-26 09:05:24 +08:00
Wang Siyuan 1e3403e756 Support ELF files with zero `p_filesz`. 2024-12-22 15:16:22 +08:00
Marsman1996 3d12ccdbea Warn unsupported clone flags instead of panic 2024-12-20 09:21:25 +08:00
Fabing Li 24f1e02b26 Support prctl(PR_SET_KEEPCAPS/PR_GET_KEEPCAPS) 2024-12-17 20:14:13 +08:00
Fabing Li 636efe68fd Give root process a full capability set 2024-12-17 20:14:13 +08:00
Ruihan Li 35c20620bc Rewrite `exit()` and `exit_group()` 2024-12-17 19:36:38 +08:00
Zejun Zhao bc5a058fc5 Add TODO for a potential vulnerability in futex implementation 2024-12-16 21:12:08 +08:00
Zejun Zhao ced0023d6b Introduce a syscall restart mechanism 2024-12-16 21:12:08 +08:00
Ruihan Li 1716f4f324 Use `Pollee` as the socket observer 2024-12-12 20:50:12 +08:00
Fabing Li fc45592a28 Fix rlimits_test 2024-12-12 16:19:01 +08:00
Ruihan Li 969ac97144 Make atomic mode panics have clear messages 2024-12-11 20:27:29 +08:00
Ruihan Li 36fc1d3757 Move FS things to `PosixThread` 2024-12-05 13:44:09 +08:00
Ruihan Li fe7e4884c9 Clarify what `CLONE_THREAD` depends on 2024-12-05 13:44:09 +08:00
徐启航 878f3f3760 Scheduling class support 2024-12-04 09:36:41 +08:00
anbo225 9608a57cb0 Make sys_setuid and sys_setgid behave consistently with Linux 2024-12-02 16:43:25 +08:00
Marsman1996 d44737360f Remove assert in `check_segment_align` 2024-12-02 16:40:47 +08:00
Qingsong Chen 5e35704e38 Support eagerly FPU state save/restore
Co-authored-by: Shaowei Song <songshaowei.ssw@antgroup.com>
2024-11-29 21:53:14 +08:00
Ruize Tang 6c4f56723c Fix futex lost wakeup 2024-11-27 10:27:22 +08:00
Ruize Tang 05ff441577 Clear `DF` flag during signal handling to conform to x86-64 calling convention 2024-11-26 10:50:58 +08:00
jiangjianfeng 495c93c2ad Refactor Rwlock to take type parameter 2024-11-21 15:46:10 +08:00
Ruihan Li ec2c6ab7a3 Make `Pollee` semi-stateless 2024-11-20 16:39:18 +08:00
Ruihan Li fab61f5f66 Make `Pollee` stateless 2024-11-20 16:39:18 +08:00
Ruihan Li 5450d0bd71 Remove dead `(un)register_observer` methods 2024-11-20 16:39:18 +08:00
Ruihan Li 39d303c72f Rename `get_current_userspace` to `current_userspace` 2024-11-15 13:24:58 +08:00
Ruihan Li 96de617ad9 Rename `get_user_space` to `user_space` 2024-11-15 13:24:58 +08:00
Ruihan Li e6c613f538 Rename `(Posix)ThreadExt` to `As(Posix)Thread` 2024-11-13 21:44:37 +08:00
Ruihan Li 9233d1cdbb Add `ThreadExt` and clean up `PosixThreadExt` 2024-11-13 21:44:37 +08:00
Ruihan Li a4a8807a20 Remove `KernelThreadExt` 2024-11-13 21:44:37 +08:00
Marsman1996 c200997c9a Avoid init stack top at `MAX_USERSPACE_VADDR` 2024-11-13 21:43:28 +08:00
Wang Siyuan 4ea3e49788 Refactor `Vmar` and `VmMapping`.
Co-authored-by: Zhang Junyang <junyang@stu.pku.edu.cn>
2024-11-13 17:29:57 +08:00
Ruihan Li 054c64542b Use `PollAdaptor` to signal `SIGIO` 2024-11-13 14:15:44 +08:00
Ruihan Li e32fb2f91b Introduce `PollAdaptor` and `Poller` 2024-11-13 14:15:44 +08:00
Ruihan Li f12e502ab0 Rename `Poller` to `PollHandle` 2024-11-13 14:15:44 +08:00
Ruihan Li 44b55f2ccf Revise the `poll()` method 2024-11-13 14:15:44 +08:00
Marsman1996 54e2ffbb71 Add check for `argc`, `arg_ptr` and `env_ptr` in `InitStackReader` 2024-11-12 11:35:46 +08:00
Ruihan Li 0ef55a396f Add a note about the FIXME 2024-11-09 17:09:41 +08:00
Ruihan Li 0c114e911b Revert "Make `pause_timeout` return `EINTR`"
This reverts commit 6421fd0b36.
2024-11-09 17:09:41 +08:00
Ruihan Li 6421fd0b36 Make `pause_timeout` return `EINTR` 2024-11-09 10:25:24 +08:00
Ruihan Li b563fb639f Revise documentations 2024-11-09 10:25:24 +08:00
Ruihan Li 32b8e05cc3 Make `*_or_timeout` APIs concise 2024-11-09 10:25:24 +08:00
Marsman1996 f287110001 Fix `InitStackReader` to access given stack instead of current task 2024-11-09 10:06:45 +08:00
Ruihan Li 19b13d88e2 Fix `clone_exit_signal` test 2024-11-06 21:53:55 +08:00
Fabing Li 7a08d9a660 Support other SigStackFlags 2024-11-06 15:00:01 +08:00
Champii1 4701eaf0cb Implementation of load average calculation and corresponding /proc entry
Moved everything into the kernel side. Add a SchedulerStats trait

Use 'fixed' to represent fixed-point numbers

Make the loadavg calculation lazy
2024-11-05 11:46:23 +08:00
Ruihan Li efd49a96e3 Rename `cond()` to `try_op()` 2024-11-03 16:54:05 +08:00
Ruihan Li 7ddfd42baa Make `wait_events` support timeout 2024-11-01 13:00:40 +08:00
Ruihan Li bbfc2cd12d Make `FileIo` pollable 2024-11-01 13:00:40 +08:00
Chen Chengjun 846b3ba169 Use LinkedList to store WorkItem to avoid additional heap allocation 2024-11-01 11:24:09 +08:00
jellllly420 6ece48c095 Refactor process table 2024-10-28 13:00:13 +08:00
Zhang Junyang 1b23182dcc Fix the thread status ordering by limiting the API 2024-10-26 22:06:41 +08:00
Zhang Junyang 3468ec213b Use `CpuId` with validity ensurance rather than `u32` 2024-10-26 22:06:41 +08:00
Chen Chengjun e60b5b7649 Refine mapping-related locks 2024-10-26 21:55:48 +08:00
jellllly420 3c857d746e Clear TID before doing futex_wake when exiting a POSIX thread 2024-10-20 13:21:27 +08:00
le-monde-bleu 54a807b5f7 Modify asterinas/kernel/src/process/posix_thread/mod.rs 2024-10-18 09:31:25 +08:00
Marsman1996 e32687e6d5 do_exit: Ignore unwrap panic caused by munmap 2024-10-14 14:48:43 +08:00
Zhang Junyang 9e4257b655 Fix multiple issues pointed out by the new compiler 2024-10-13 22:32:05 +08:00
Shaowei Song ea489252f4 Refactor `Dentry` to optimize the vfs layer 2024-10-11 11:22:52 +08:00
YanWQ-monad 4fa0e6334b Add RISC-V base support 2024-09-30 10:02:08 +08:00
YanWQ-monad 839c2a6689 Extract shared code from timer 2024-09-30 10:02:08 +08:00
jellllly420 9cc63149f1 Remove cpu_affinity field from OSTD Task struct 2024-09-27 10:21:45 +08:00
jellllly420 8927031426 Remove priority field from OSTD Task struct 2024-09-27 10:21:45 +08:00
Carlos López 0a36760f7a Respect user-defined exit signal in clone() and clone3()
When calling clone() and clone3(), the user is allowed to specify a
signal to be sent to the parent process on exit. Respect this value by
storing it in the Process struct and sending the signal on exit.

Add a test as well to verify that the signal is properly delivered to
the parent.
2024-09-26 20:07:43 +08:00
Carlos López 130a0f7030 Homogenize arguments for clone() and clone3()
The arguments for both syscalls follow different formats. Rewrite the
CloneArgs struct to homogenize both formats into one.
2024-09-26 20:07:43 +08:00
Jianfeng Jiang fb718fd440 Optimize the latency of lat-sig-install 2024-09-25 17:29:20 +08:00
jellllly420 21fedd1b60 Implement atomic wrapper for integer-like type 2024-09-25 14:47:37 +08:00
YanWQ-monad 4d36dd541f Extract x86-specific exception handling in aster-nix 2024-09-23 19:39:45 +08:00
Yuke Peng 46708f84bc Implement futex private flag 2024-09-22 16:00:56 +08:00
Jianfeng Jiang 70505ff4f8 Support futex wait timeout 2024-09-19 22:42:13 +08:00
Jianfeng Jiang f159b42b61 Fix the condition in is_last_thread 2024-09-18 16:59:17 +08:00
Marsman1996 44629e4627 Fix panic in FutexKey::load_val when no read access 2024-09-14 22:45:59 +08:00
Jianfeng Jiang f3174dbbbc Make task store Arc<Thread> and process store Arc<Task> 2024-09-14 17:34:14 +08:00
Jianfeng Jiang 81b0f265b5 Move Tid from Thread to PosixThread 2024-09-14 17:34:14 +08:00
Chen Chengjun 42e28763c5 Replace the Pausers' usage with Waiter/WaitQueue 2024-09-14 13:59:07 +08:00
Chen Chengjun 822caf34f4 Move Pauser's functionality to Waiter/WaiterQueue and add the per-thread signalled waker 2024-09-14 13:59:07 +08:00
Chen Chengjun 1873bb7a3f Add wait_until_* functionality to Waiter 2024-09-14 13:59:07 +08:00
Chen Chengjun 6a5a5b4d3d Add a fast path to has_pending 2024-09-14 13:59:07 +08:00
Ruihan Li 421f6b8e5b Fix I/O events cross different states 2024-09-13 22:09:46 +08:00
Shaowei Song 1186fb7ca9 Use `SpinLock` on `FileTable` for efficiency 2024-09-13 19:48:26 +08:00
Qingsong Chen 787604b7f6 Use ParentProcess to cache parent pid 2024-09-12 17:41:56 +08:00
Jianfeng Jiang a72c7dadf3 Optimize the latency of lmbench-signal-prot 2024-08-28 14:27:41 +08:00
Chen Chengjun ffc717f00b Enable handling page fault around 2024-08-28 11:04:03 +08:00
Cautreoxit 86f09eef75 Fix all spelling mistakes in history by typos tool 2024-08-27 12:19:48 +08:00
Chen Chengjun 6bde87d33a Fix a bug of InitStack during doing fork+exec 2024-08-25 15:14:11 +08:00
Zhang Junyang dafd16075f Remove the shim kernel crate 2024-08-23 23:37:50 +08:00