]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - include/linux/sched.h
sched: do not do cond_resched() when CONFIG_PREEMPT
[karo-tx-linux.git] / include / linux / sched.h
index 72e1b8ecfbe10c026475baada8cda72cb18a2d9c..7907845c234804c1010ffd14f77308b1d1842515 100644 (file)
@@ -929,6 +929,12 @@ struct sched_entity {
 #endif
 };
 
+struct sched_rt_entity {
+       struct list_head run_list;
+       unsigned int time_slice;
+       unsigned long timeout;
+};
+
 struct task_struct {
        volatile long state;    /* -1 unrunnable, 0 runnable, >0 stopped */
        void *stack;
@@ -945,9 +951,9 @@ struct task_struct {
 #endif
 
        int prio, static_prio, normal_prio;
-       struct list_head run_list;
        const struct sched_class *sched_class;
        struct sched_entity se;
+       struct sched_rt_entity rt;
 
 #ifdef CONFIG_PREEMPT_NOTIFIERS
        /* list of struct preempt_notifier: */
@@ -972,7 +978,6 @@ struct task_struct {
        unsigned int policy;
        cpumask_t cpus_allowed;
        int nr_cpus_allowed;
-       unsigned int time_slice;
 
 #ifdef CONFIG_PREEMPT_RCU
        int rcu_read_lock_nesting;
@@ -1880,7 +1885,18 @@ static inline int need_resched(void)
  * cond_resched_lock() will drop the spinlock before scheduling,
  * cond_resched_softirq() will enable bhs before scheduling.
  */
-extern int cond_resched(void);
+#ifdef CONFIG_PREEMPT
+static inline int cond_resched(void)
+{
+       return 0;
+}
+#else
+extern int _cond_resched(void);
+static inline int cond_resched(void)
+{
+       return _cond_resched();
+}
+#endif
 extern int cond_resched_lock(spinlock_t * lock);
 extern int cond_resched_softirq(void);