git: 8e1c74210cec - stable/13 - Add thread_run_flash() helper
Konstantin Belousov
kib at FreeBSD.org
Mon May 10 01:14:50 UTC 2021
The branch stable/13 has been updated by kib:
URL: https://cgit.FreeBSD.org/src/commit/?id=8e1c74210cec0b81318b6f90648cb0e9387244ad
commit 8e1c74210cec0b81318b6f90648cb0e9387244ad
Author: Konstantin Belousov <kib at FreeBSD.org>
AuthorDate: 2021-04-24 11:47:53 +0000
Commit: Konstantin Belousov <kib at FreeBSD.org>
CommitDate: 2021-05-10 01:02:28 +0000
Add thread_run_flash() helper
(cherry picked from commit af928fded0705100e4f3926c99ed488f7ab6dcf1)
---
sys/kern/kern_thread.c | 25 +++++++++++++++++++++++++
sys/sys/proc.h | 1 +
2 files changed, 26 insertions(+)
diff --git a/sys/kern/kern_thread.c b/sys/kern/kern_thread.c
index 3561895d9fff..c16b6dd3c791 100644
--- a/sys/kern/kern_thread.c
+++ b/sys/kern/kern_thread.c
@@ -1514,6 +1514,31 @@ thread_unsuspend_one(struct thread *td, struct proc *p, bool boundary)
return (setrunnable(td, 0));
}
+void
+thread_run_flash(struct thread *td)
+{
+ struct proc *p;
+
+ p = td->td_proc;
+ PROC_LOCK_ASSERT(p, MA_OWNED);
+
+ if (TD_ON_SLEEPQ(td))
+ sleepq_remove_nested(td);
+ else
+ thread_lock(td);
+
+ THREAD_LOCK_ASSERT(td, MA_OWNED);
+ KASSERT(TD_IS_SUSPENDED(td), ("Thread not suspended"));
+
+ TD_CLR_SUSPENDED(td);
+ PROC_SLOCK(p);
+ MPASS(p->p_suspcount > 0);
+ p->p_suspcount--;
+ PROC_SUNLOCK(p);
+ if (setrunnable(td, 0))
+ kick_proc0();
+}
+
/*
* Allow all threads blocked by single threading to continue running.
*/
diff --git a/sys/sys/proc.h b/sys/sys/proc.h
index 3e5a96185e0c..9de7be4628dd 100644
--- a/sys/sys/proc.h
+++ b/sys/sys/proc.h
@@ -1179,6 +1179,7 @@ void thread_stopped(struct proc *p);
void childproc_stopped(struct proc *child, int reason);
void childproc_continued(struct proc *child);
void childproc_exited(struct proc *child);
+void thread_run_flash(struct thread *td);
int thread_suspend_check(int how);
bool thread_suspend_check_needed(void);
void thread_suspend_switch(struct thread *, struct proc *p);
More information about the dev-commits-src-all
mailing list