Linux Headquarters
[ Register ]
[ About us ] [ Home Page ]

Advertisement
[ Kernel ] [ Documentation ] [ Links ] [ Books ]

Advertisement

Kernel v2.5.75 /kernel/sched.c

Filename:/kernel/sched.c
Lines Added:13
Lines Deleted:12
Also changed in: (Previous) 2.5.74-bk7  2.5.74-bk6  2.5.74-bk5  2.5.74  2.5.73-bk10  2.5.73-bk9 
(Following) 2.5.75-bk1  2.5.75-bk2  2.5.75-bk3 

Location
[  2.5.75
  [  kernel
     o  sched.c

Patch

diff -Nru a/kernel/sched.c b/kernel/sched.c
--- a/kernel/sched.c   Thu Jul 10 13:16:28 2003
+++ b/kernel/sched.c   Thu Jul 10 13:16:28 2003
@@ -508,8 +508,8 @@
       }
 #ifdef CONFIG_SMP
              else
-         if (unlikely(kick) && task_running(rq, p) && (p->thread_info->cpu != smp_processor_id()))
-            smp_send_reschedule(p->thread_info->cpu);
+         if (unlikely(kick) && task_running(rq, p) && (task_cpu(p) != smp_processor_id()))
+            smp_send_reschedule(task_cpu(p));
 #endif
       p->state = TASK_RUNNING;
    }
@@ -646,9 +646,9 @@
    if (unlikely(!mm)) {
       next->active_mm = oldmm;
       atomic_inc(&oldmm->mm_count);
-      enter_lazy_tlb(oldmm, next, smp_processor_id());
+      enter_lazy_tlb(oldmm, next);
    } else
-      switch_mm(oldmm, mm, next, smp_processor_id());
+      switch_mm(oldmm, mm, next);
 
    if (unlikely(!prev->mm)) {
       prev->active_mm = NULL;
@@ -1175,6 +1175,7 @@
 void scheduler_tick(int user_ticks, int sys_ticks)
 {
    int cpu = smp_processor_id();
+   struct cpu_usage_stat *cpustat = &kstat_this_cpu.cpustat;
    runqueue_t *rq = this_rq();
    task_t *p = current;
 
@@ -1184,19 +1185,19 @@
    if (p == rq->idle) {
       /* note: this timer irq context must be accounted for as well */
       if (irq_count() - HARDIRQ_OFFSET >= SOFTIRQ_OFFSET)
-         kstat_cpu(cpu).cpustat.system += sys_ticks;
+         cpustat->system += sys_ticks;
       else if (atomic_read(&rq->nr_iowait) > 0)
-         kstat_cpu(cpu).cpustat.iowait += sys_ticks;
+         cpustat->iowait += sys_ticks;
       else
-         kstat_cpu(cpu).cpustat.idle += sys_ticks;
+         cpustat->idle += sys_ticks;
       rebalance_tick(rq, 1);
       return;
    }
    if (TASK_NICE(p) > 0)
-      kstat_cpu(cpu).cpustat.nice += user_ticks;
+      cpustat->nice += user_ticks;
    else
-      kstat_cpu(cpu).cpustat.user += user_ticks;
-   kstat_cpu(cpu).cpustat.system += sys_ticks;
+      cpustat->user += user_ticks;
+   cpustat->system += sys_ticks;
 
    /* Task might have expired already, but not scheduled off yet */
    if (p->array != rq->active) {
@@ -1332,7 +1333,7 @@
 switch_tasks:
    prefetch(next);
    clear_tsk_need_resched(prev);
-   RCU_qsctr(prev->thread_info->cpu)++;
+   RCU_qsctr(task_cpu(prev))++;
 
    if (likely(prev != next)) {
       rq->nr_switches++;
@@ -2527,7 +2528,7 @@
     * The boot idle thread does lazy MMU switching as well:
     */
    atomic_inc(&init_mm.mm_count);
-   enter_lazy_tlb(&init_mm, current, smp_processor_id());
+   enter_lazy_tlb(&init_mm, current);
 }
 
 #ifdef CONFIG_DEBUG_SPINLOCK_SLEEP


Comments: webmaster (at) linuxhq.com.
Advertising: banners (at) linuxhq.com.
Compilation ©1998-2008 Linux Headquarters, Inc.