aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans Petter Selasky <hselasky@FreeBSD.org>2021-05-21 08:27:20 +0000
committerHans Petter Selasky <hselasky@FreeBSD.org>2021-05-23 08:53:25 +0000
commitef0f7ae934b04a4f90e051d701ba539dd04e7d5b (patch)
tree769f334a2501b041a8c3cec1d832da5bf89c151b
parentc50346bcf5c5ccd0ef65d273edea6143f66c999f (diff)
downloadsrc-ef0f7ae934b04a4f90e051d701ba539dd04e7d5b.tar.gz
src-ef0f7ae934b04a4f90e051d701ba539dd04e7d5b.zip
-rw-r--r--sys/kern/subr_epoch.c6
-rw-r--r--sys/sys/epoch.h1
-rw-r--r--sys/sys/param.h2
-rw-r--r--sys/sys/proc.h1
4 files changed, 5 insertions, 5 deletions
diff --git a/sys/kern/subr_epoch.c b/sys/kern/subr_epoch.c
index 798dbdc4360e..651fd8b419f0 100644
--- a/sys/kern/subr_epoch.c
+++ b/sys/kern/subr_epoch.c
@@ -457,7 +457,7 @@ _epoch_enter_preempt(epoch_t epoch, epoch_tracker_t et EPOCH_FILE_LINE)
THREAD_NO_SLEEPING();
critical_enter();
sched_pin();
- td->td_pre_epoch_prio = td->td_priority;
+ et->et_old_priority = td->td_priority;
er = epoch_currecord(epoch);
/* Record-level tracking is reserved for non-preemptible epochs. */
MPASS(er->er_td == NULL);
@@ -510,8 +510,8 @@ _epoch_exit_preempt(epoch_t epoch, epoch_tracker_t et EPOCH_FILE_LINE)
ck_epoch_end(&er->er_record, &et->et_section);
TAILQ_REMOVE(&er->er_tdlist, et, et_link);
er->er_gen++;
- if (__predict_false(td->td_pre_epoch_prio != td->td_priority))
- epoch_adjust_prio(td, td->td_pre_epoch_prio);
+ if (__predict_false(et->et_old_priority != td->td_priority))
+ epoch_adjust_prio(td, et->et_old_priority);
critical_exit();
#ifdef EPOCH_TRACE
epoch_trace_exit(td, epoch, et, file, line);
diff --git a/sys/sys/epoch.h b/sys/sys/epoch.h
index 25d2bb3dc6e3..85c791d3df6c 100644
--- a/sys/sys/epoch.h
+++ b/sys/sys/epoch.h
@@ -55,6 +55,7 @@ struct epoch_tracker {
TAILQ_ENTRY(epoch_tracker) et_link;
struct thread *et_td;
ck_epoch_section_t et_section;
+ uint8_t et_old_priority;
#ifdef EPOCH_TRACE
struct epoch *et_epoch;
SLIST_ENTRY(epoch_tracker) et_tlink;
diff --git a/sys/sys/param.h b/sys/sys/param.h
index 68808f3e2185..81971777e87b 100644
--- a/sys/sys/param.h
+++ b/sys/sys/param.h
@@ -76,7 +76,7 @@
* cannot include sys/param.h and should only be updated here.
*/
#undef __FreeBSD_version
-#define __FreeBSD_version 1400013
+#define __FreeBSD_version 1400014
/*
* __FreeBSD_kernel__ indicates that this system uses the kernel of FreeBSD,
diff --git a/sys/sys/proc.h b/sys/sys/proc.h
index 926f0de14b84..8098bb9468ec 100644
--- a/sys/sys/proc.h
+++ b/sys/sys/proc.h
@@ -325,7 +325,6 @@ struct thread {
u_char td_pri_class; /* (t) Scheduling class. */
u_char td_user_pri; /* (t) User pri from estcpu and nice. */
u_char td_base_user_pri; /* (t) Base user pri */
- u_char td_pre_epoch_prio; /* (k) User pri on entry to epoch */
uintptr_t td_rb_list; /* (k) Robust list head. */
uintptr_t td_rbp_list; /* (k) Robust priv list head. */
uintptr_t td_rb_inact; /* (k) Current in-action mutex loc. */