Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=bc947631d1d532c758f8fcbdeb1f7fc2f4c863f8
Commit:     bc947631d1d532c758f8fcbdeb1f7fc2f4c863f8
Parent:     136f1e7a8cb7d17ff91706518549697071640ae4
Author:     Peter Williams <[EMAIL PROTECTED]>
AuthorDate: Tue Dec 19 12:48:50 2006 +1000
Committer:  Linus Torvalds <[EMAIL PROTECTED]>
CommitDate: Thu Dec 21 00:11:51 2006 -0800

    [PATCH] sched: improve efficiency of sched_fork()
    
    Problem:
      sched_fork() has always called scheduler_tick() in some (unlikely)
      circumstances in order to update the current task in light of those
      circumstances.  It has always been the case that the work done by
      scheduler_tick() was more than was required to handle the problem in
      hand but no harm was done except for the waste of a few CPU cycles.
    
      However, the splitting of scheduler_tick() into two procedures in
      2.6.20-rc1 enables the wasted cycles to be saved as the new procedure
      task_running_tick() does all the work that is required to rectify the
      problem being handled.
    
    Solution:
      Replace the call to scheduler_tick() in sched_fork() with a call to
      task_running_tick().
    
    Signed-off-by: Peter Williams <[EMAIL PROTECTED]>
    Acked-by: Ingo Molnar <[EMAIL PROTECTED]>
    Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>
---
 kernel/sched.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/kernel/sched.c b/kernel/sched.c
index 5cd833b..b81ed87 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -1567,6 +1567,7 @@ int fastcall wake_up_state(struct task_struct *p, 
unsigned int state)
        return try_to_wake_up(p, state, 0);
 }
 
+static void task_running_tick(struct rq *rq, struct task_struct *p);
 /*
  * Perform scheduler related setup for a newly forked process p.
  * p is forked by current.
@@ -1627,7 +1628,7 @@ void fastcall sched_fork(struct task_struct *p, int 
clone_flags)
                 * runqueue lock is not a problem.
                 */
                current->time_slice = 1;
-               scheduler_tick();
+               task_running_tick(cpu_rq(cpu), current);
        }
        local_irq_enable();
        put_cpu();
-
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