git: ed998d1c24db - main - ithreads: Support priority adjustment by schedulers.
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 14 Jul 2022 20:15:35 UTC
The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=ed998d1c24dba600cf5fdf669370f1e2dfad3e47 commit ed998d1c24dba600cf5fdf669370f1e2dfad3e47 Author: John Baldwin <jhb@FreeBSD.org> AuthorDate: 2022-07-14 20:13:35 +0000 Commit: John Baldwin <jhb@FreeBSD.org> CommitDate: 2022-07-14 20:13:35 +0000 ithreads: Support priority adjustment by schedulers. Use sched_wakeup instead of sched_add when marking an ithread runnable. This allows schedulers to reset their internal time slice tracking state and restore the base ithread priority when an ithread resumes from idle. Reviewed by: markj Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D35643 --- sys/kern/kern_intr.c | 4 ++-- sys/kern/kern_timeout.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/sys/kern/kern_intr.c b/sys/kern/kern_intr.c index 693c5595ba31..3cd80f63704f 100644 --- a/sys/kern/kern_intr.c +++ b/sys/kern/kern_intr.c @@ -589,7 +589,7 @@ ithread_destroy(struct intr_thread *ithread) ithread->it_flags |= IT_DEAD; if (TD_AWAITING_INTR(td)) { TD_CLR_IWAIT(td); - sched_add(td, SRQ_INTR); + sched_wakeup(td, SRQ_INTR); } else thread_unlock(td); } @@ -1020,7 +1020,7 @@ intr_event_schedule_thread(struct intr_event *ie, struct trapframe *frame) CTR3(KTR_INTR, "%s: schedule pid %d (%s)", __func__, td->td_proc->p_pid, td->td_name); TD_CLR_IWAIT(td); - sched_add(td, SRQ_INTR); + sched_wakeup(td, SRQ_INTR); } else { #ifdef HWPMC_HOOKS it->it_waiting++; diff --git a/sys/kern/kern_timeout.c b/sys/kern/kern_timeout.c index 621ea258f21c..23ddd03ae72e 100644 --- a/sys/kern/kern_timeout.c +++ b/sys/kern/kern_timeout.c @@ -559,7 +559,7 @@ next: thread_lock_block_wait(td); THREAD_LOCK_ASSERT(td, MA_OWNED); TD_CLR_IWAIT(td); - sched_add(td, SRQ_INTR); + sched_wakeup(td, SRQ_INTR); } else mtx_unlock_spin_flags(&cc->cc_lock, MTX_QUIET); } else