summaryrefslogtreecommitdiffstats
path: root/sys/kern/ksched.c
diff options
context:
space:
mode:
authorjb <jb@FreeBSD.org>2006-10-26 21:42:22 +0000
committerjb <jb@FreeBSD.org>2006-10-26 21:42:22 +0000
commitf82c7997354f95e680341bb8e10136ded5fd15eb (patch)
tree2136d90e7e60f4ef25fe147499787d0e6a155b82 /sys/kern/ksched.c
parentb3e38fbc69f126c6cc49a0a6e45096d6c01b7c43 (diff)
downloadFreeBSD-src-f82c7997354f95e680341bb8e10136ded5fd15eb.zip
FreeBSD-src-f82c7997354f95e680341bb8e10136ded5fd15eb.tar.gz
Make KSE a kernel option, turned on by default in all GENERIC
kernel configs except sun4v (which doesn't process signals properly with KSE). Reviewed by: davidxu@
Diffstat (limited to 'sys/kern/ksched.c')
-rw-r--r--sys/kern/ksched.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/sys/kern/ksched.c b/sys/kern/ksched.c
index 3c2ecb3..e8af76b 100644
--- a/sys/kern/ksched.c
+++ b/sys/kern/ksched.c
@@ -106,7 +106,11 @@ getscheduler(struct ksched *ksched, struct thread *td, int *policy)
int e = 0;
mtx_lock_spin(&sched_lock);
+#ifdef KSE
pri_to_rtp(td->td_ksegrp, &rtp);
+#else
+ pri_to_rtp(td, &rtp);
+#endif
mtx_unlock_spin(&sched_lock);
switch (rtp.type)
{
@@ -153,7 +157,11 @@ ksched_getparam(struct ksched *ksched,
struct rtprio rtp;
mtx_lock_spin(&sched_lock);
+#ifdef KSE
pri_to_rtp(td->td_ksegrp, &rtp);
+#else
+ pri_to_rtp(td, &rtp);
+#endif
mtx_unlock_spin(&sched_lock);
if (RTP_PRIO_IS_REALTIME(rtp.type))
param->sched_priority = rtpprio_to_p4prio(rtp.prio);
@@ -174,7 +182,9 @@ ksched_setscheduler(struct ksched *ksched,
{
int e = 0;
struct rtprio rtp;
+#ifdef KSE
struct ksegrp *kg = td->td_ksegrp;
+#endif
switch(policy)
{
@@ -189,6 +199,7 @@ ksched_setscheduler(struct ksched *ksched,
? RTP_PRIO_FIFO : RTP_PRIO_REALTIME;
mtx_lock_spin(&sched_lock);
+#ifdef KSE
rtp_to_pri(&rtp, kg);
FOREACH_THREAD_IN_GROUP(kg, td) { /* XXXKSE */
if (TD_IS_RUNNING(td)) {
@@ -199,6 +210,9 @@ ksched_setscheduler(struct ksched *ksched,
}
}
}
+#else
+ rtp_to_pri(&rtp, td);
+#endif
mtx_unlock_spin(&sched_lock);
}
else
@@ -212,6 +226,7 @@ ksched_setscheduler(struct ksched *ksched,
rtp.type = RTP_PRIO_NORMAL;
rtp.prio = p4prio_to_rtpprio(param->sched_priority);
mtx_lock_spin(&sched_lock);
+#ifdef KSE
rtp_to_pri(&rtp, kg);
/* XXX Simply revert to whatever we had for last
@@ -230,6 +245,9 @@ ksched_setscheduler(struct ksched *ksched,
}
}
+#else
+ rtp_to_pri(&rtp, td);
+#endif
mtx_unlock_spin(&sched_lock);
}
break;
OpenPOWER on IntegriCloud