Deleted Added
full compact
sched_ule.c (113386) sched_ule.c (113387)
1/*-
2 * Copyright (c) 2002-2003, Jeffrey Roberson <jeff@freebsd.org>
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 9 unchanged lines hidden (view full) ---

18 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
19 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
20 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
21 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
24 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 *
1/*-
2 * Copyright (c) 2002-2003, Jeffrey Roberson <jeff@freebsd.org>
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 9 unchanged lines hidden (view full) ---

18 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
19 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
20 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
21 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
24 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 *
26 * $FreeBSD: head/sys/kern/sched_ule.c 113386 2003-04-12 07:00:16Z jeff $
26 * $FreeBSD: head/sys/kern/sched_ule.c 113387 2003-04-12 07:28:36Z jeff $
27 */
28
29#include <sys/param.h>
30#include <sys/systm.h>
31#include <sys/kernel.h>
32#include <sys/ktr.h>
33#include <sys/lock.h>
34#include <sys/mutex.h>

--- 1022 unchanged lines hidden (view full) ---

1057 KASSERT((ke->ke_thread != NULL), ("sched_add: No thread on KSE"));
1058 KASSERT((ke->ke_thread->td_kse != NULL),
1059 ("sched_add: No KSE on thread"));
1060 KASSERT(ke->ke_state != KES_ONRUNQ,
1061 ("sched_add: kse %p (%s) already in run queue", ke,
1062 ke->ke_proc->p_comm));
1063 KASSERT(ke->ke_proc->p_sflag & PS_INMEM,
1064 ("sched_add: process swapped out"));
27 */
28
29#include <sys/param.h>
30#include <sys/systm.h>
31#include <sys/kernel.h>
32#include <sys/ktr.h>
33#include <sys/lock.h>
34#include <sys/mutex.h>

--- 1022 unchanged lines hidden (view full) ---

1057 KASSERT((ke->ke_thread != NULL), ("sched_add: No thread on KSE"));
1058 KASSERT((ke->ke_thread->td_kse != NULL),
1059 ("sched_add: No KSE on thread"));
1060 KASSERT(ke->ke_state != KES_ONRUNQ,
1061 ("sched_add: kse %p (%s) already in run queue", ke,
1062 ke->ke_proc->p_comm));
1063 KASSERT(ke->ke_proc->p_sflag & PS_INMEM,
1064 ("sched_add: process swapped out"));
1065 KASSERT(ke->ke_runq == NULL,
1066 ("sched_add: KSE %p is still assigned to a run queue", ke));
1065
1066 kg = ke->ke_ksegrp;
1067
1067
1068 kg = ke->ke_ksegrp;
1069
1068 if (ke->ke_runq)
1069 Debugger("hrm?");
1070
1071 switch (PRI_BASE(kg->kg_pri_class)) {
1072 case PRI_ITHD:
1073 case PRI_REALTIME:
1074 kseq = KSEQ_SELF();
1070 switch (PRI_BASE(kg->kg_pri_class)) {
1071 case PRI_ITHD:
1072 case PRI_REALTIME:
1073 kseq = KSEQ_SELF();
1075 if (ke->ke_runq == NULL)
1076 kseq_add(kseq, ke);
1077 ke->ke_runq = kseq->ksq_curr;
1078 ke->ke_slice = SCHED_SLICE_MAX;
1079 break;
1080 case PRI_TIMESHARE:
1081 kseq = KSEQ_CPU(ke->ke_cpu);
1074 ke->ke_runq = kseq->ksq_curr;
1075 ke->ke_slice = SCHED_SLICE_MAX;
1076 break;
1077 case PRI_TIMESHARE:
1078 kseq = KSEQ_CPU(ke->ke_cpu);
1082 if (ke->ke_runq == NULL) {
1083 if (SCHED_CURR(kg, ke))
1084 ke->ke_runq = kseq->ksq_curr;
1085 else
1086 ke->ke_runq = kseq->ksq_next;
1087 kseq_add(kseq, ke);
1088 }
1079 if (SCHED_CURR(kg, ke))
1080 ke->ke_runq = kseq->ksq_curr;
1081 else
1082 ke->ke_runq = kseq->ksq_next;
1089 break;
1090 case PRI_IDLE:
1091 kseq = KSEQ_CPU(ke->ke_cpu);
1083 break;
1084 case PRI_IDLE:
1085 kseq = KSEQ_CPU(ke->ke_cpu);
1092
1093 if (ke->ke_runq == NULL)
1094 kseq_add(kseq, ke);
1095 /*
1096 * This is for priority prop.
1097 */
1098 if (ke->ke_thread->td_priority < PRI_MAX_TIMESHARE)
1099 ke->ke_runq = kseq->ksq_curr;
1100 else
1101 ke->ke_runq = &kseq->ksq_idle;
1102 ke->ke_slice = SCHED_SLICE_MIN;
1103 break;
1104 default:
1105 panic("Unknown pri class.\n");
1106 break;
1107 }
1108
1109 ke->ke_ksegrp->kg_runq_kses++;
1110 ke->ke_state = KES_ONRUNQ;
1111
1112 runq_add(ke->ke_runq, ke);
1086 /*
1087 * This is for priority prop.
1088 */
1089 if (ke->ke_thread->td_priority < PRI_MAX_TIMESHARE)
1090 ke->ke_runq = kseq->ksq_curr;
1091 else
1092 ke->ke_runq = &kseq->ksq_idle;
1093 ke->ke_slice = SCHED_SLICE_MIN;
1094 break;
1095 default:
1096 panic("Unknown pri class.\n");
1097 break;
1098 }
1099
1100 ke->ke_ksegrp->kg_runq_kses++;
1101 ke->ke_state = KES_ONRUNQ;
1102
1103 runq_add(ke->ke_runq, ke);
1104 kseq_add(kseq, ke);
1113}
1114
1115void
1116sched_rem(struct kse *ke)
1117{
1118 struct kseq *kseq;
1119
1120 mtx_assert(&sched_lock, MA_OWNED);
1105}
1106
1107void
1108sched_rem(struct kse *ke)
1109{
1110 struct kseq *kseq;
1111
1112 mtx_assert(&sched_lock, MA_OWNED);
1121 /* KASSERT((ke->ke_state == KES_ONRUNQ), ("KSE not on run queue")); */
1122 panic("WTF\n");
1113 KASSERT((ke->ke_state == KES_ONRUNQ), ("KSE not on run queue"));
1123
1124 ke->ke_state = KES_THREAD;
1125 ke->ke_ksegrp->kg_runq_kses--;
1126 kseq = KSEQ_CPU(ke->ke_cpu);
1127 runq_remove(ke->ke_runq, ke);
1128 kseq_rem(kseq, ke);
1129}
1130

--- 47 unchanged lines hidden ---
1114
1115 ke->ke_state = KES_THREAD;
1116 ke->ke_ksegrp->kg_runq_kses--;
1117 kseq = KSEQ_CPU(ke->ke_cpu);
1118 runq_remove(ke->ke_runq, ke);
1119 kseq_rem(kseq, ke);
1120}
1121

--- 47 unchanged lines hidden ---