Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=62160e3f4a06d948ec89665d29f1173e551deedc
Commit:     62160e3f4a06d948ec89665d29f1173e551deedc
Parent:     53df556e06d85245cf6aacedaba8e4da684859c3
Author:     Ingo Molnar <[EMAIL PROTECTED]>
AuthorDate: Mon Oct 15 17:00:03 2007 +0200
Committer:  Ingo Molnar <[EMAIL PROTECTED]>
CommitDate: Mon Oct 15 17:00:03 2007 +0200

    sched: track cfs_rq->curr on !group-scheduling too
    
    Noticed by Roman Zippel: use cfs_rq->curr in the !group-scheduling
    case too. Small micro-optimization and cleanup effect:
    
       text    data     bss     dec     hex filename
       36269    3482      24   39775    9b5f sched.o.before
       36177    3486      24   39687    9b07 sched.o.after
    
    Signed-off-by: Ingo Molnar <[EMAIL PROTECTED]>
    Signed-off-by: Peter Zijlstra <[EMAIL PROTECTED]>
    Signed-off-by: Mike Galbraith <[EMAIL PROTECTED]>
    Reviewed-by: Thomas Gleixner <[EMAIL PROTECTED]>
---
 kernel/sched.c      |    2 +-
 kernel/sched_fair.c |   31 +++++++++----------------------
 2 files changed, 10 insertions(+), 23 deletions(-)

diff --git a/kernel/sched.c b/kernel/sched.c
index f6a8106..3209e2c 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -189,11 +189,11 @@ struct cfs_rq {
        struct rb_root tasks_timeline;
        struct rb_node *rb_leftmost;
        struct rb_node *rb_load_balance_curr;
-#ifdef CONFIG_FAIR_GROUP_SCHED
        /* 'curr' points to currently running entity on this cfs_rq.
         * It is set to NULL otherwise (i.e when none are currently running).
         */
        struct sched_entity *curr;
+#ifdef CONFIG_FAIR_GROUP_SCHED
        struct rq *rq;  /* cpu runqueue to which this cfs_rq is attached */
 
        /* leaf cfs_rqs are those that hold tasks (lowest schedulable entity in
diff --git a/kernel/sched_fair.c b/kernel/sched_fair.c
index 105d57b..335faf0 100644
--- a/kernel/sched_fair.c
+++ b/kernel/sched_fair.c
@@ -111,51 +111,38 @@ extern struct sched_class fair_sched_class;
  * CFS operations on generic schedulable entities:
  */
 
-#ifdef CONFIG_FAIR_GROUP_SCHED
-
-/* cpu runqueue to which this cfs_rq is attached */
-static inline struct rq *rq_of(struct cfs_rq *cfs_rq)
-{
-       return cfs_rq->rq;
-}
-
 /* currently running entity (if any) on this cfs_rq */
 static inline struct sched_entity *cfs_rq_curr(struct cfs_rq *cfs_rq)
 {
        return cfs_rq->curr;
 }
 
-/* An entity is a task if it doesn't "own" a runqueue */
-#define entity_is_task(se)     (!se->my_q)
-
 static inline void
 set_cfs_rq_curr(struct cfs_rq *cfs_rq, struct sched_entity *se)
 {
        cfs_rq->curr = se;
 }
 
-#else  /* CONFIG_FAIR_GROUP_SCHED */
+#ifdef CONFIG_FAIR_GROUP_SCHED
 
+/* cpu runqueue to which this cfs_rq is attached */
 static inline struct rq *rq_of(struct cfs_rq *cfs_rq)
 {
-       return container_of(cfs_rq, struct rq, cfs);
+       return cfs_rq->rq;
 }
 
-static inline struct sched_entity *cfs_rq_curr(struct cfs_rq *cfs_rq)
-{
-       struct rq *rq = rq_of(cfs_rq);
+/* An entity is a task if it doesn't "own" a runqueue */
+#define entity_is_task(se)     (!se->my_q)
 
-       if (unlikely(rq->curr->sched_class != &fair_sched_class))
-               return NULL;
+#else  /* CONFIG_FAIR_GROUP_SCHED */
 
-       return &rq->curr->se;
+static inline struct rq *rq_of(struct cfs_rq *cfs_rq)
+{
+       return container_of(cfs_rq, struct rq, cfs);
 }
 
 #define entity_is_task(se)     1
 
-static inline void
-set_cfs_rq_curr(struct cfs_rq *cfs_rq, struct sched_entity *se) { }
-
 #endif /* CONFIG_FAIR_GROUP_SCHED */
 
 static inline struct task_struct *task_of(struct sched_entity *se)
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to