aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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.h2
4 files changed, 6 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 127c04becf58..f9b67ef94bc0 100644
--- a/sys/sys/param.h
+++ b/sys/sys/param.h
@@ -60,7 +60,7 @@
* in the range 5 to 9.
*/
#undef __FreeBSD_version
-#define __FreeBSD_version 1300506 /* Master, propagated to newvers */
+#define __FreeBSD_version 1300507 /* Master, propagated to newvers */
/*
* __FreeBSD_kernel__ indicates that this system uses the kernel of FreeBSD,
diff --git a/sys/sys/proc.h b/sys/sys/proc.h
index 8e2a081eb027..05fdc83fd1e2 100644
--- a/sys/sys/proc.h
+++ b/sys/sys/proc.h
@@ -325,7 +325,7 @@ 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 */
+ u_char td_unused_0; /* no longer used field */
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. */