single core framework is working
authorRené Sechting <sechting@mailbox.tu-berlin.de>
Wed, 9 Oct 2013 11:35:30 +0000 (13:35 +0200)
committerRené Sechting <sechting@mailbox.tu-berlin.de>
Wed, 9 Oct 2013 11:35:30 +0000 (13:35 +0200)
there was of course a stupid programming error. removing this made it work just
excellent. we are booting in less than a second and everything works out of the box.

kernel/sched.new/core.c

index ac2fe81..33bf8c1 100644 (file)
@@ -845,9 +845,6 @@ void update_cpu_load_nohz(void)
  */
 void wake_up_new_task(struct task_struct *tsk)
 {
-       //framework and modules need to know about the new task
-       tsk->fw_task = NULL;
-       send_to_topic(1,tsk);
 
        unsigned long flags;
        struct rq *rq = cpu_rq(0);
@@ -865,6 +862,11 @@ void wake_up_new_task(struct task_struct *tsk)
        raw_spin_unlock(&rq->lock);
        raw_spin_unlock_irqrestore(&tsk->pi_lock, flags);
 
+       //framework and modules need to know about the new task
+       tsk->fw_task = NULL;
+       send_to_topic(1,tsk);
+
+
 }
 
 /*
@@ -993,8 +995,6 @@ need_resched:
        rcu_note_context_switch(cpu);
        prev = rq->curr;
 
-
-
        raw_spin_lock_irq(&rq->lock);
 
 
@@ -1102,9 +1102,6 @@ static int
 try_to_wake_up(struct task_struct *p, unsigned int state, int wake_flags)
 {
 
-       send_to_topic(0,p);
-       return 0;
-
        unsigned long flags;
        int cpu, success = 0;
        int ret = 0;
@@ -1136,6 +1133,10 @@ try_to_wake_up(struct task_struct *p, unsigned int state, int wake_flags)
 
        //list_add(&p->rq_tasks, &rq->rq_list);
 
+
+       //inform the framework that a new task needs to get into the rq
+       send_to_topic(0,p);
+
        if (rq->curr == rq->idle)
                resched_task(rq->curr);
 
@@ -1147,6 +1148,7 @@ stat:
 out:
        raw_spin_unlock_irqrestore(&p->pi_lock, flags);
 
+
        return success;
 
 }