lkml.org 
[lkml]   [2009]   [Dec]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 05/12] sched: Use TASK_WAKING for fork wakups
    For later convenience use TASK_WAKING for fresh tasks.

    Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
    ---
    kernel/sched.c | 18 +++++++++---------
    1 file changed, 9 insertions(+), 9 deletions(-)

    Index: linux-2.6/kernel/sched.c
    ===================================================================
    --- linux-2.6.orig/kernel/sched.c
    +++ linux-2.6/kernel/sched.c
    @@ -2544,14 +2544,6 @@ static void __sched_fork(struct task_str
    #ifdef CONFIG_PREEMPT_NOTIFIERS
    INIT_HLIST_HEAD(&p->preempt_notifiers);
    #endif
    -
    - /*
    - * We mark the process as running here, but have not actually
    - * inserted it onto the runqueue yet. This guarantees that
    - * nobody will actually run it, and a signal or other external
    - * event cannot wake it up and insert it on the runqueue either.
    - */
    - p->state = TASK_RUNNING;
    }

    /*
    @@ -2562,6 +2554,12 @@ void sched_fork(struct task_struct *p, i
    int cpu = get_cpu();

    __sched_fork(p);
    + /*
    + * We mark the process as waking here. This guarantees that
    + * nobody will actually run it, and a signal or other external
    + * event cannot wake it up and insert it on the runqueue either.
    + */
    + p->state = TASK_WAKING;

    /*
    * Revert to default priority/policy on fork if requested.
    @@ -2630,7 +2628,8 @@ void wake_up_new_task(struct task_struct
    struct rq *rq;

    rq = task_rq_lock(p, &flags);
    - BUG_ON(p->state != TASK_RUNNING);
    + BUG_ON(p->state != TASK_WAKING);
    + p->state = TASK_RUNNING;
    update_rq_clock(rq);
    activate_task(rq, p, 0);
    trace_sched_wakeup_new(rq, p, 1);
    @@ -6992,6 +6991,7 @@ void __cpuinit init_idle(struct task_str
    raw_spin_lock_irqsave(&rq->lock, flags);

    __sched_fork(idle);
    + idle->state = TASK_RUNNING;
    idle->se.exec_start = sched_clock();

    cpumask_copy(&idle->cpus_allowed, cpumask_of(cpu));
    --



    \
     
     \ /
      Last update: 2009-12-16 18:09    [W:0.021 / U:120.084 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site