Author: cactus                       Date: Mon Sep 14 20:25:16 2009 GMT
Module: packages                      Tag: Titanium
---- Log message:
- up to bfs 0.221 for kernel 2.6.31

---- Files affected:
packages/kernel-desktop:
   kernel-desktop-sched-bfs.patch (1.1.2.4 -> 1.1.2.5) 

---- Diffs:

================================================================
Index: packages/kernel-desktop/kernel-desktop-sched-bfs.patch
diff -u packages/kernel-desktop/kernel-desktop-sched-bfs.patch:1.1.2.4 
packages/kernel-desktop/kernel-desktop-sched-bfs.patch:1.1.2.5
--- packages/kernel-desktop/kernel-desktop-sched-bfs.patch:1.1.2.4      Mon Sep 
 7 20:20:39 2009
+++ packages/kernel-desktop/kernel-desktop-sched-bfs.patch      Mon Sep 14 
22:25:11 2009
@@ -1,4 +1,4 @@
-The Brain Fuck Scheduler v0.209 by Con Kolivas.
+The Brain Fuck Scheduler v0.221 by Con Kolivas.
 
 A single shared runqueue O(n) strict fairness earliest deadline first design.
 
@@ -7,7 +7,6 @@
 
 Scalability is optimal when your workload is equal to the number of CPUs on
 bfs. ie you should ONLY do make -j4 on quad core, -j2 on dual core and so on.
-It's actually faster than higher numbers of jobs on *any* scheduler.
 
 Features SCHED_IDLEPRIO and SCHED_ISO scheduling policies as well.
 
@@ -19,36 +18,43 @@
 
 schedtool -I -e amarok
 
+Now includes accurate sub-tick accounting of tasks so userspace reported
+cpu usage may be very different.
+
 ---
- Documentation/sysctl/kernel.txt |   25
+ Documentation/sysctl/kernel.txt |   28
+ Makefile                        |    2
  fs/pipe.c                       |    4
  fs/proc/base.c                  |    2
  include/linux/init_task.h       |   15
  include/linux/ioprio.h          |    2
- include/linux/sched.h           |  193
+ include/linux/sched.h           |  194
  init/Kconfig                    |   61
+ init/main.c                     |    5
+ kernel/Kconfig.preempt          |   19
  kernel/Makefile                 |    4
  kernel/delayacct.c              |    2
  kernel/exit.c                   |    6
  kernel/fork.c                   |    2
  kernel/kthread.c                |    4
- kernel/posix-cpu-timers.c       |   12
- kernel/sched.c                  |10241 
----------------------------------------
- kernel/sched_bfs.c              | 5793 ++++++++++++++++++++++
+ kernel/posix-cpu-timers.c       |   14
+ kernel/sched.c                  |10583 
----------------------------------------
+ kernel/sched_bfs.c              | 6203 +++++++++++++++++++++++
  kernel/sched_debug.c            |  509 -
- kernel/sched_fair.c             | 1835 -------
- kernel/sched_idletask.c         |  128
- kernel/sched_rt.c               | 1771 ------
- kernel/sysctl.c                 |  145
+ kernel/sched_fair.c             | 1842 ------
+ kernel/sched_idletask.c         |  129
+ kernel/sched_rt.c               | 1787 ------
+ kernel/sysctl.c                 |  156
+ kernel/timer.c                  |    3
  kernel/trace/trace.c            |    4
  kernel/workqueue.c              |    2
  mm/oom_kill.c                   |    2
- 23 files changed, 5896 insertions(+), 14866 deletions(-)
+ 27 files changed, 6319 insertions(+), 15265 deletions(-)
 
-Index: linux-2.6.30-bfs/Documentation/sysctl/kernel.txt
+Index: linux-2.6.31-bfs/Documentation/sysctl/kernel.txt
 ===================================================================
---- linux-2.6.30-bfs.orig/Documentation/sysctl/kernel.txt      2009-09-03 
19:50:51.796053865 +1000
-+++ linux-2.6.30-bfs/Documentation/sysctl/kernel.txt   2009-09-03 
19:51:10.160055089 +1000
+--- linux-2.6.31-bfs.orig/Documentation/sysctl/kernel.txt      2009-09-13 
13:45:35.267511949 +1000
++++ linux-2.6.31-bfs/Documentation/sysctl/kernel.txt   2009-09-13 
13:45:45.782386464 +1000
 @@ -27,6 +27,7 @@
  - domainname
  - hostname
@@ -57,7 +63,7 @@
  - java-appletviewer           [ binfmt_java, obsolete ]
  - java-interpreter            [ binfmt_java, obsolete ]
  - kstack_depth_to_print       [ X86 only ]
-@@ -48,6 +49,7 @@
+@@ -49,6 +50,7 @@
  - randomize_va_space
  - real-root-dev               ==> Documentation/initrd.txt
  - reboot-cmd                  [ SPARC only ]
@@ -65,7 +71,7 @@
  - rtsig-max
  - rtsig-nr
  - sem
-@@ -170,6 +172,16 @@
+@@ -171,6 +173,16 @@
 
  ==============================================================
 
@@ -82,7 +88,7 @@
  l2cr: (PPC only)
 
  This flag controls the L2 cache of G3 processor boards. If
-@@ -322,6 +334,19 @@
+@@ -333,6 +345,22 @@
 
  ==============================================================
 
@@ -91,21 +97,24 @@
 +This is the smallest duration that any cpu process scheduling unit
 +will run for. Increasing this value can increase throughput of cpu
 +bound tasks substantially but at the expense of increased latencies
-+overall. This value is in milliseconds and the default value chosen
-+depends on the number of cpus available at scheduler initialisation
-+with a minimum of 6.
++overall. Conversely decreasing it will decrease average and maximum
++latencies but at the expense of throughput. This value is in
++milliseconds and the default value chosen depends on the number of
++cpus available at scheduler initialisation with a minimum of 6. The
++value can be set to 0 which means no more than one tick (limited
++by HZ resolution).
 +
-+Valid values are from 1-5000.
++Valid values are from 0-5000.
 +
 +==============================================================
 +
  rtsig-max & rtsig-nr:
 
  The file rtsig-max can be used to tune the maximum number
-Index: linux-2.6.30-bfs/fs/pipe.c
+Index: linux-2.6.31-bfs/fs/pipe.c
 ===================================================================
---- linux-2.6.30-bfs.orig/fs/pipe.c    2009-09-03 19:50:51.757054464 +1000
-+++ linux-2.6.30-bfs/fs/pipe.c 2009-09-03 19:51:10.181054636 +1000
+--- linux-2.6.31-bfs.orig/fs/pipe.c    2009-09-13 13:45:35.238512036 +1000
++++ linux-2.6.31-bfs/fs/pipe.c 2009-09-13 13:45:45.794386717 +1000
 @@ -78,10 +78,6 @@
  {
        DEFINE_WAIT(wait);
@@ -117,11 +126,11 @@
        prepare_to_wait(&pipe->wait, &wait, TASK_INTERRUPTIBLE);
        pipe_unlock(pipe);
        schedule();
-Index: linux-2.6.30-bfs/include/linux/init_task.h
+Index: linux-2.6.31-bfs/include/linux/init_task.h
 ===================================================================
---- linux-2.6.30-bfs.orig/include/linux/init_task.h    2009-09-03 
19:50:51.802053428 +1000
-+++ linux-2.6.30-bfs/include/linux/init_task.h 2009-09-06 18:56:46.759601885 
+1000
-@@ -119,21 +119,16 @@
+--- linux-2.6.31-bfs.orig/include/linux/init_task.h    2009-09-13 
13:45:35.272511904 +1000
++++ linux-2.6.31-bfs/include/linux/init_task.h 2009-09-13 13:45:45.811386843 
+1000
+@@ -116,21 +116,16 @@
        .usage          = ATOMIC_INIT(2),                               \
        .flags          = PF_KTHREAD,                                   \
        .lock_depth     = -1,                                           \
@@ -148,10 +157,10 @@
        .tasks          = LIST_HEAD_INIT(tsk.tasks),                    \
        .pushable_tasks = PLIST_NODE_INIT(tsk.pushable_tasks, MAX_PRIO), \
        .ptraced        = LIST_HEAD_INIT(tsk.ptraced),                  \
-Index: linux-2.6.30-bfs/include/linux/sched.h
+Index: linux-2.6.31-bfs/include/linux/sched.h
 ===================================================================
---- linux-2.6.30-bfs.orig/include/linux/sched.h        2009-09-03 
19:50:51.813054751 +1000
-+++ linux-2.6.30-bfs/include/linux/sched.h     2009-09-03 23:38:22.267262950 
+1000
+--- linux-2.6.31-bfs.orig/include/linux/sched.h        2009-09-13 
13:45:35.281511942 +1000
++++ linux-2.6.31-bfs/include/linux/sched.h     2009-09-13 13:46:11.880566952 
+1000
 @@ -36,8 +36,11 @@
  #define SCHED_FIFO            1
  #define SCHED_RR              2
@@ -166,7 +175,7 @@
 
  #ifdef __KERNEL__
 
-@@ -141,13 +144,10 @@
+@@ -144,13 +147,10 @@
  extern unsigned long get_parent_ip(unsigned long addr);
 
  struct seq_file;
@@ -180,7 +189,7 @@
  #else
  static inline void
  proc_sched_show_task(struct task_struct *p, struct seq_file *m)
-@@ -156,10 +156,6 @@
+@@ -159,10 +159,6 @@
  static inline void proc_sched_set_task(struct task_struct *p)
  {
  }
@@ -191,7 +200,7 @@
  #endif
 
  extern unsigned long long time_sync_thresh;
-@@ -251,8 +247,8 @@
+@@ -254,8 +250,8 @@
  extern void init_idle(struct task_struct *idle, int cpu);
  extern void init_idle_bootup_task(struct task_struct *idle);
 
@@ -202,11 +211,7 @@
 
  extern cpumask_var_t nohz_cpu_mask;
  #if defined(CONFIG_SMP) && defined(CONFIG_NO_HZ)
-@@ -969,151 +965,9 @@
- struct mempolicy;
- struct pipe_inode_info;
- struct uts_namespace;
--
+@@ -1021,148 +1017,6 @@
  struct rq;
  struct sched_domain;
 
@@ -289,9 +294,10 @@
 -      u64                     last_wakeup;
 -      u64                     avg_overlap;
 -
+-      u64                     nr_migrations;
+-
 -      u64                     start_runtime;
 -      u64                     avg_wakeup;
--      u64                     nr_migrations;
 -
 -#ifdef CONFIG_SCHEDSTATS
 -      u64                     wait_start;
@@ -354,7 +360,7 @@
  struct task_struct {
        volatile long state;    /* -1 unrunnable, 0 runnable, >0 stopped */
        void *stack;
-@@ -1123,17 +977,18 @@
+@@ -1172,17 +1026,18 @@
 
        int lock_depth;         /* BKL lock depth */
 
@@ -381,7 +387,7 @@
 
  #ifdef CONFIG_PREEMPT_NOTIFIERS
        /* list of struct preempt_notifier: */
-@@ -1156,6 +1011,9 @@
+@@ -1205,6 +1060,9 @@
 
        unsigned int policy;
        cpumask_t cpus_allowed;
@@ -391,7 +397,15 @@
 
  #ifdef CONFIG_PREEMPT_RCU
        int rcu_read_lock_nesting;
-@@ -1446,11 +1304,14 @@
+@@ -1273,6 +1131,7 @@
+       int __user *clear_child_tid;            /* CLONE_CHILD_CLEARTID */
+
+       cputime_t utime, stime, utimescaled, stimescaled;
++      unsigned long utime_pc, stime_pc;
+       cputime_t gtime;
+       cputime_t prev_utime, prev_stime;
+       unsigned long nvcsw, nivcsw; /* context switch counts */
+@@ -1497,11 +1356,14 @@
   * priority to a value higher than any user task. Note:
   * MAX_RT_PRIO must not be smaller than MAX_USER_RT_PRIO.
   */
@@ -409,7 +423,7 @@
  #define DEFAULT_PRIO          (MAX_RT_PRIO + 20)
 
  static inline int rt_prio(int prio)
-@@ -1733,11 +1594,7 @@
+@@ -1785,11 +1647,7 @@
  extern unsigned long long thread_group_sched_runtime(struct task_struct 
*task);
 
  /* sched_exec is called by processes performing an exec */
@@ -421,11 +435,11 @@
 
  extern void sched_clock_idle_sleep_event(void);
  extern void sched_clock_idle_wakeup_event(u64 delta_ns);
-Index: linux-2.6.30-bfs/kernel/sched.c
+Index: linux-2.6.31-bfs/kernel/sched.c
 ===================================================================
---- linux-2.6.30-bfs.orig/kernel/sysctl.c      2009-09-03 19:50:51.867053380 
+1000
-+++ linux-2.6.30-bfs/kernel/sysctl.c   2009-09-03 19:51:10.311054330 +1000
-@@ -83,6 +83,8 @@
+--- linux-2.6.31-bfs.orig/kernel/sysctl.c      2009-09-13 13:45:35.325511987 
+1000
++++ linux-2.6.31-bfs/kernel/sysctl.c   2009-09-13 13:45:45.824386781 +1000
+@@ -86,6 +86,8 @@
  extern int compat_log;
  extern int latencytop_enabled;
  extern int sysctl_nr_open_min, sysctl_nr_open_max;
@@ -434,7 +448,7 @@
  #ifndef CONFIG_MMU
  extern int sysctl_nr_trim_pages;
  #endif
-@@ -97,10 +99,11 @@
+@@ -100,10 +102,11 @@
  #endif
 
  static int zero;
@@ -448,7 +462,7 @@
 
  /* this is needed for the proc_doulongvec_minmax of vm_dirty_bytes */
  static unsigned long dirty_bytes_min = 2 * PAGE_SIZE;
-@@ -234,123 +237,7 @@
+@@ -238,134 +241,7 @@
        { .ctl_name = 0 }
  };
 
@@ -544,6 +558,17 @@
 -              .mode           = 0644,
 -              .proc_handler   = &proc_dointvec,
 -      },
+-      {
+-              .ctl_name       = CTL_UNNUMBERED,
+-              .procname       = "timer_migration",
+-              .data           = &sysctl_timer_migration,
+-              .maxlen         = sizeof(unsigned int),
+-              .mode           = 0644,
+-              .proc_handler   = &proc_dointvec_minmax,
+-              .strategy       = &sysctl_intvec,
+-              .extra1         = &zero,
+-              .extra2         = &one,
+-      },
 -#endif
 -      {
 -              .ctl_name       = CTL_UNNUMBERED,
@@ -572,7 +597,7 @@
  #ifdef CONFIG_PROVE_LOCKING
        {
                .ctl_name       = CTL_UNNUMBERED,
-@@ -756,6 +643,28 @@
+@@ -798,6 +674,28 @@
                .proc_handler   = &proc_dointvec,
        },
  #endif
@@ -584,7 +609,7 @@
 +              .mode           = 0644,
 +              .proc_handler   = &proc_dointvec_minmax,
 +              .strategy       = &sysctl_intvec,
-+              .extra1         = &one,
++              .extra1         = &zero,
 +              .extra2         = &five_thousand,
 +      },
 +      {
@@ -601,11 +626,11 @@
  #if defined(CONFIG_S390) && defined(CONFIG_SMP)
        {
                .ctl_name       = KERN_SPIN_RETRY,
-Index: linux-2.6.30-bfs/kernel/workqueue.c
+Index: linux-2.6.31-bfs/kernel/workqueue.c
 ===================================================================
---- linux-2.6.30-bfs.orig/kernel/workqueue.c   2009-09-03 19:50:51.895053538 
+1000
-+++ linux-2.6.30-bfs/kernel/workqueue.c        2009-09-03 19:51:10.366061008 
+1000
-@@ -320,8 +320,6 @@
+--- linux-2.6.31-bfs.orig/kernel/workqueue.c   2009-09-13 13:45:35.345512018 
+1000
++++ linux-2.6.31-bfs/kernel/workqueue.c        2009-09-13 13:45:45.836549400 
+1000
+@@ -317,8 +317,6 @@
        if (cwq->wq->freezeable)
                set_freezable();
 
@@ -614,11 +639,11 @@
        for (;;) {
                prepare_to_wait(&cwq->more_work, &wait, TASK_INTERRUPTIBLE);
                if (!freezing(current) &&
-Index: linux-2.6.30-bfs/kernel/sched_fair.c
+Index: linux-2.6.31-bfs/kernel/sched_fair.c
 ===================================================================
 --- /dev/null  1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.30-bfs/kernel/sched_bfs.c        2009-09-06 18:56:58.389602008 
+1000
-@@ -0,0 +1,5793 @@
++++ linux-2.6.31-bfs/kernel/sched_bfs.c        2009-09-14 16:41:30.090860676 
+1000
+@@ -0,0 +1,6203 @@
 +/*
 + *  kernel/sched_bfs.c, was sched.c
 + *
@@ -662,6 +687,7 @@
 +#include <linux/completion.h>
 +#include <linux/kernel_stat.h>
 +#include <linux/debug_locks.h>
++#include <linux/perf_counter.h>
 +#include <linux/security.h>
 +#include <linux/notifier.h>
 +#include <linux/profile.h>
@@ -687,20 +713,25 @@
 +#include <linux/delayacct.h>
 +#include <linux/reciprocal_div.h>
 +#include <linux/log2.h>
++#include <linux/bootmem.h>
 +#include <linux/ftrace.h>
-+#include <trace/sched.h>
 +
 +#include <asm/tlb.h>
 +#include <asm/unistd.h>
 +
++#define CREATE_TRACE_POINTS
++#include <trace/events/sched.h>
++
 +#define rt_prio(prio)         unlikely((prio) < MAX_RT_PRIO)
 +#define rt_task(p)            rt_prio((p)->prio)
++#define rt_queue(rq)          rt_prio((rq)->rq_prio)
 +#define batch_task(p)         (unlikely((p)->policy == SCHED_BATCH))
 +#define is_rt_policy(policy)  ((policy) == SCHED_FIFO || \
 +                                      (policy) == SCHED_RR)
 +#define has_rt_policy(p)      unlikely(is_rt_policy((p)->policy))
 +#define idleprio_task(p)      unlikely((p)->policy == SCHED_IDLEPRIO)
 +#define iso_task(p)           unlikely((p)->policy == SCHED_ISO)
++#define iso_queue(rq)         unlikely((rq)->rq_policy == SCHED_ISO)
 +#define ISO_PERIOD            ((5 * HZ * num_online_cpus()) + 1)
 +
 +/*
@@ -727,13 +758,6 @@
 +#define MS_TO_NS(TIME)                ((TIME) * 1000000)
 +#define MS_TO_US(TIME)                ((TIME) * 1000)
 +
-+
-+DEFINE_TRACE(sched_wait_task);
-+DEFINE_TRACE(sched_wakeup);
-+DEFINE_TRACE(sched_wakeup_new);
-+DEFINE_TRACE(sched_switch);
-+DEFINE_TRACE(sched_migrate_task);
-+
 +#ifdef CONFIG_SMP
 +/*
 + * Divide a load by a sched group cpu_power : (load / sg->__cpu_power)
@@ -788,6 +812,7 @@
 +#ifdef CONFIG_SMP
 +      cpumask_t cpu_idle_map;
 +#endif
++      void (*wunt)(struct task_struct *, struct rq *, unsigned long);
 +};
 +
 +static struct global_rq grq;
@@ -807,8 +832,19 @@
 +      struct task_struct *curr, *idle;
 +      struct mm_struct *prev_mm;
 +
-+      unsigned long queued_deadline;
-+      int queued_prio;
++      /* Stored data about rq->curr to work outside grq lock */
++      unsigned long rq_deadline;
++      unsigned int rq_policy;
++      int rq_time_slice;
++      int rq_prio;
++
++      /* Accurate timekeeping data */
++      u64 timekeep_clock;
++      unsigned long user_ns, nice_ns, irq_ns, softirq_ns, system_ns,
++                      iowait_ns, idle_ns;
++      unsigned long user_pc, nice_pc, irq_pc, softirq_pc, system_pc,
++                      iowait_pc, idle_pc;
++      unsigned long total_ns, last_total_ns;
 +
 +      atomic_t nr_iowait;
 +
@@ -922,7 +958,7 @@
 +# define finish_arch_switch(prev)     do { } while (0)
 +#endif
 +
-+static inline void update_rq_clock(struct rq *rq)
++inline void update_rq_clock(struct rq *rq)
 +{
 +      rq->clock = sched_clock_cpu(cpu_of(rq));
 +}
@@ -935,6 +971,7 @@
 +static inline void grq_lock(void)
 +      __acquires(grq.lock)
 +{
++      smp_mb();
 +      spin_lock(&grq.lock);
 +}
 +
@@ -947,14 +984,15 @@
 +static inline void grq_lock_irq(void)
 +      __acquires(grq.lock)
 +{
++      smp_mb();
 +      spin_lock_irq(&grq.lock);
 +}
 +
-+static inline void time_lock_rq(struct rq *rq)
++static inline void time_lock_grq(struct rq *rq)
 +      __acquires(grq.lock)
 +{
-+      grq_lock();
 +      update_rq_clock(rq);
++      grq_lock();
 +}
 +
 +static inline void grq_unlock_irq(void)
@@ -967,7 +1005,7 @@
 +      __acquires(grq.lock)
 +{
 +      local_irq_save(*flags);
-+      spin_lock(&grq.lock);
++      grq_lock();
 +}
 +
 +static inline void grq_unlock_irqrestore(unsigned long *flags)
@@ -991,9 +1029,10 @@
 +{
 +      struct rq *rq;
 +
-+      grq_lock_irqsave(flags);
 +      rq = task_rq(p);
++      local_irq_save(*flags);
 +      update_rq_clock(rq);
++      grq_lock();
 +      return rq;
 +}
 +
@@ -1026,7 +1065,7 @@
 +      __acquires(grq.lock)
 +{
 +      local_irq_save(*flags);
-+      time_lock_rq(rq);
++      time_lock_grq(rq);
 +}
 +
 +static inline struct rq *__task_grq_lock(struct task_struct *p)
@@ -1131,17 +1170,12 @@
 +/*
 + * Adding to the global runqueue. Enter with grq locked.
 + */
-+static inline void enqueue_task(struct task_struct *p)
++static void enqueue_task(struct task_struct *p)
 +{
-+      if (idleprio_task(p) && !rt_task(p)) {
-+              if (idleprio_suitable(p))
-+                      p->prio = p->normal_prio;
-+              else
-+                      p->prio = NORMAL_PRIO;
-+      }
-+
-+      if (iso_task(p) && !rt_task(p)) {
-+              if (isoprio_suitable())
++      if (!rt_task(p)) {
++              /* Check it hasn't gotten rt from PI */
++              if ((idleprio_task(p) && idleprio_suitable(p)) ||
++                 (iso_task(p) && isoprio_suitable()))
 +                      p->prio = p->normal_prio;
 +              else
 +                      p->prio = NORMAL_PRIO;
@@ -1166,7 +1200,7 @@
 +
 +static inline int prio_ratio(struct task_struct *p)
 +{
-+      return prio_ratios[USER_PRIO(p->static_prio)];
++      return prio_ratios[TASK_USER_PRIO(p)];
 +}
 +
 +/*
@@ -1174,7 +1208,7 @@
 + * length. CPU distribution is handled by giving different deadlines to
 + * tasks of different priorities.
 + */
-+static int task_timeslice(struct task_struct *p)
++static inline int task_timeslice(struct task_struct *p)
 +{
 +      return (rr_interval * prio_ratio(p) / 100);
 +}
@@ -1260,7 +1294,7 @@
 +#ifdef CONFIG_SMP
 +void set_task_cpu(struct task_struct *p, unsigned int cpu)
 +{
-+      trace_sched_migrate_task(p, task_cpu(p), cpu);
++      trace_sched_migrate_task(p, cpu);
 +      /*
 +       * After ->cpu is set up to a new value, task_grq_lock(p, ...) can be
 +       * successfuly executed on another CPU. We must ensure that updates of
@@ -1355,6 +1389,49 @@
 +};
 +
 +/*
++ * wait_task_context_switch - wait for a thread to complete at least one
++ *                            context switch.
++ *
++ * @p must not be current.
++ */
++void wait_task_context_switch(struct task_struct *p)
++{
++      unsigned long nvcsw, nivcsw, flags;
++      int running;
++      struct rq *rq;
++
++      nvcsw   = p->nvcsw;
++      nivcsw  = p->nivcsw;
++      for (;;) {
++              /*
++               * The runqueue is assigned before the actual context
++               * switch. We need to take the runqueue lock.
++               *
++               * We could check initially without the lock but it is
++               * very likely that we need to take the lock in every
++               * iteration.
++               */
++              rq = task_grq_lock(p, &flags);
++              running = task_running(p);
++              task_grq_unlock(&flags);
++
++              if (likely(!running))
++                      break;
++              /*
++               * The switch count is incremented before the actual
++               * context switch. We thus wait for two switches to be
++               * sure at least one completed.
++               */
++              if ((p->nvcsw - nvcsw) > 1)
++                      break;
++              if ((p->nivcsw - nivcsw) > 1)
++                      break;
<<Diff was trimmed, longer than 597 lines>>

---- CVS-web:
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/kernel-desktop/kernel-desktop-sched-bfs.patch?r1=1.1.2.4&r2=1.1.2.5&f=u

_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to