From 3ffa25394753950fa61f08b598bc8eaa70402261 Mon Sep 17 00:00:00 2001 From: Wang Siyuan Date: Wed, 12 Nov 2025 11:59:53 +0000 Subject: [PATCH] Store `Weak` in `PosixThread` --- kernel/src/process/posix_thread/builder.rs | 1 + kernel/src/process/posix_thread/mod.rs | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/kernel/src/process/posix_thread/builder.rs b/kernel/src/process/posix_thread/builder.rs index 486149bf8..0b73fe616 100644 --- a/kernel/src/process/posix_thread/builder.rs +++ b/kernel/src/process/posix_thread/builder.rs @@ -163,6 +163,7 @@ impl PosixThreadBuilder { PosixThread { process, + task: weak_task.clone(), tid: AtomicU32::new(tid), name: Mutex::new(thread_name), credentials, diff --git a/kernel/src/process/posix_thread/mod.rs b/kernel/src/process/posix_thread/mod.rs index 6d1edfd9c..be56e96e1 100644 --- a/kernel/src/process/posix_thread/mod.rs +++ b/kernel/src/process/posix_thread/mod.rs @@ -3,7 +3,10 @@ use core::sync::atomic::{AtomicU32, Ordering}; use aster_rights::{ReadDupOp, ReadOp, WriteOp}; -use ostd::sync::{RoArc, RwMutexReadGuard, Waker}; +use ostd::{ + sync::{RoArc, RwMutexReadGuard, Waker}, + task::Task, +}; use super::{ signal::{sig_mask::AtomicSigMask, sig_num::SigNum, sig_queues::SigQueues, signals::Signal}, @@ -38,6 +41,7 @@ pub use thread_local::{AsThreadLocal, FileTableRefMut, ThreadLocal}; pub struct PosixThread { // Immutable part process: Weak, + task: Weak, // Mutable part tid: AtomicU32,