The branch stable/13 has been updated by kib:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=8e1c74210cec0b81318b6f90648cb0e9387244ad

commit 8e1c74210cec0b81318b6f90648cb0e9387244ad
Author:     Konstantin Belousov <[email protected]>
AuthorDate: 2021-04-24 11:47:53 +0000
Commit:     Konstantin Belousov <[email protected]>
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);
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/dev-commits-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to