summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/kern/sched_4bsd.c12
-rw-r--r--sys/kern/sched_ule.c4
2 files changed, 16 insertions, 0 deletions
diff --git a/sys/kern/sched_4bsd.c b/sys/kern/sched_4bsd.c
index ee20384..07a7071 100644
--- a/sys/kern/sched_4bsd.c
+++ b/sys/kern/sched_4bsd.c
@@ -441,6 +441,7 @@ sched_clock(struct kse *ke)
struct ksegrp *kg;
struct thread *td;
+ mtx_assert(&sched_lock, MA_OWNED);
kg = ke->ke_ksegrp;
td = ke->ke_thread;
@@ -476,6 +477,8 @@ sched_exit_kse(struct kse *ke, struct kse *child)
void
sched_exit_ksegrp(struct ksegrp *kg, struct ksegrp *child)
{
+
+ mtx_assert(&sched_lock, MA_OWNED);
kg->kg_estcpu = ESTCPULIM(kg->kg_estcpu + child->kg_estcpu);
}
@@ -501,6 +504,7 @@ sched_fork_kse(struct kse *ke, struct kse *child)
void
sched_fork_ksegrp(struct ksegrp *kg, struct ksegrp *child)
{
+ mtx_assert(&sched_lock, MA_OWNED);
child->kg_estcpu = kg->kg_estcpu;
}
@@ -522,6 +526,7 @@ sched_nice(struct ksegrp *kg, int nice)
void
sched_class(struct ksegrp *kg, int class)
{
+ mtx_assert(&sched_lock, MA_OWNED);
kg->kg_pri_class = class;
}
@@ -535,6 +540,7 @@ void
sched_prio(struct thread *td, u_char prio)
{
+ mtx_assert(&sched_lock, MA_OWNED);
if (TD_ON_RUNQ(td)) {
adjustrunqueue(td, prio);
} else {
@@ -545,6 +551,8 @@ sched_prio(struct thread *td, u_char prio)
void
sched_sleep(struct thread *td, u_char prio)
{
+
+ mtx_assert(&sched_lock, MA_OWNED);
td->td_ksegrp->kg_slptime = 0;
td->td_priority = prio;
}
@@ -552,6 +560,8 @@ sched_sleep(struct thread *td, u_char prio)
void
sched_switchin(struct thread *td)
{
+
+ mtx_assert(&sched_lock, MA_OWNED);
td->td_oncpu = PCPU_GET(cpuid);
}
@@ -564,6 +574,7 @@ sched_switchout(struct thread *td)
ke = td->td_kse;
p = td->td_proc;
+ mtx_assert(&sched_lock, MA_OWNED);
KASSERT((ke->ke_state == KES_THREAD), ("mi_switch: kse state?"));
td->td_lastcpu = td->td_oncpu;
@@ -593,6 +604,7 @@ sched_wakeup(struct thread *td)
{
struct ksegrp *kg;
+ mtx_assert(&sched_lock, MA_OWNED);
kg = td->td_ksegrp;
if (kg->kg_slptime > 1)
updatepri(kg);
diff --git a/sys/kern/sched_ule.c b/sys/kern/sched_ule.c
index aa40de8..e3c5a8e 100644
--- a/sys/kern/sched_ule.c
+++ b/sys/kern/sched_ule.c
@@ -769,6 +769,7 @@ sched_fork(struct proc *p, struct proc *p1)
void
sched_fork_kse(struct kse *ke, struct kse *child)
{
+
child->ke_slice = ke->ke_slice;
child->ke_cpu = ke->ke_cpu; /* sched_pickcpu(); */
child->ke_runq = NULL;
@@ -785,6 +786,8 @@ sched_fork_kse(struct kse *ke, struct kse *child)
void
sched_fork_ksegrp(struct ksegrp *kg, struct ksegrp *child)
{
+
+ PROC_LOCK_ASSERT(child->kg_proc, MA_OWNED);
/* XXX Need something better here */
if (kg->kg_slptime > kg->kg_runtime) {
child->kg_slptime = SCHED_DYN_RANGE;
@@ -809,6 +812,7 @@ sched_class(struct ksegrp *kg, int class)
struct kseq *kseq;
struct kse *ke;
+ mtx_assert(&sched_lock, MA_OWNED);
if (kg->kg_pri_class == class)
return;
OpenPOWER on IntegriCloud