<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">diff -urN linux-2.4.19-pre7-ac2/include/linux/sched.h linux/include/linux/sched.h
--- linux-2.4.19-pre7-ac2/include/linux/sched.h	Fri Apr 19 20:58:14 2002
+++ linux/include/linux/sched.h	Fri Apr 19 20:58:51 2002
@@ -914,6 +914,31 @@
 	return res;
 }
 
+static inline void set_need_resched(void)
+{
+	current-&gt;need_resched = 1;
+}
+
+static inline void clear_need_resched(void)
+{
+	current-&gt;need_resched = 0;
+}
+
+static inline void set_tsk_need_resched(struct task_struct *tsk)
+{
+	tsk-&gt;need_resched = 1;
+}
+
+static inline void clear_tsk_need_resched(struct task_struct *tsk)
+{
+	tsk-&gt;need_resched = 0;
+}
+
+static inline int need_resched(void)
+{
+	return unlikely(current-&gt;need_resched);
+}
+
 #endif /* __KERNEL__ */
 
 #endif
diff -urN linux-2.4.19-pre7-ac2/kernel/sched.c linux/kernel/sched.c
--- linux-2.4.19-pre7-ac2/kernel/sched.c	Fri Apr 19 20:58:14 2002
+++ linux/kernel/sched.c	Fri Apr 19 20:59:45 2002
@@ -253,7 +253,7 @@
 
 	need_resched = p-&gt;need_resched;
 	wmb();
-	p-&gt;need_resched = 1;
+	set_tsk_need_resched(p);
 	if (!need_resched &amp;&amp; (p-&gt;cpu != smp_processor_id()))
 		smp_send_reschedule(p-&gt;cpu);
 }
@@ -612,7 +612,7 @@
 	this_rq-&gt;nr_running++;
 	enqueue_task(next, this_rq-&gt;active);
 	if (next-&gt;prio &lt; current-&gt;prio)
-		current-&gt;need_resched = 1;
+		set_need_resched();
 	if (!idle &amp;&amp; --imbalance) {
 		if (array == busiest-&gt;expired) {
 			array = busiest-&gt;active;
@@ -686,7 +686,7 @@
 
 	/* Task might have expired already, but not scheduled off yet */
 	if (p-&gt;array != rq-&gt;active) {
-		p-&gt;need_resched = 1;
+		set_tsk_need_resched(p);
 		return;
 	}
 	spin_lock(&amp;rq-&gt;lock);
@@ -697,7 +697,7 @@
 		 */
 		if ((p-&gt;policy == SCHED_RR) &amp;&amp; !--p-&gt;time_slice) {
 			p-&gt;time_slice = TASK_TIMESLICE(p);
-			p-&gt;need_resched = 1;
+			set_tsk_need_resched(p);
 
 			/* put it at the end of the queue: */
 			dequeue_task(p, rq-&gt;active);
@@ -717,7 +717,7 @@
 		p-&gt;sleep_avg--;
 	if (!--p-&gt;time_slice) {
 		dequeue_task(p, rq-&gt;active);
-		p-&gt;need_resched = 1;
+		set_tsk_need_resched(p);
 		p-&gt;prio = effective_prio(p);
 		p-&gt;time_slice = TASK_TIMESLICE(p);
 
@@ -797,7 +797,7 @@
 
 switch_tasks:
 	prefetch(next);
-	prev-&gt;need_resched = 0;
+	clear_tsk_need_resched(prev);
 
 	if (likely(prev != next)) {
 		rq-&gt;nr_switches++;
@@ -1464,7 +1464,7 @@
 	idle-&gt;state = TASK_RUNNING;
 	idle-&gt;cpu = cpu;
 	double_rq_unlock(idle_rq, rq);
-	idle-&gt;need_resched = 1;
+	set_tsk_need_resched(idle);
 	__restore_flags(flags);
 }
 
</pre></body></html>