kern

diff src/sched.c @ 52:fa65b4f45366

picking this up again, let's fix it
author John Tsiombikas <nuclear@member.fsf.org>
date Sun, 07 Aug 2011 06:42:00 +0300
parents b1e8c8251884
children 23abbeea4d5f
line diff
     1.1 --- a/src/sched.c	Mon Aug 01 06:45:29 2011 +0300
     1.2 +++ b/src/sched.c	Sun Aug 07 06:42:00 2011 +0300
     1.3 @@ -21,17 +21,18 @@
     1.4  
     1.5  void schedule(void)
     1.6  {
     1.7 +	disable_intr();
     1.8 +
     1.9  	if(EMPTY(runq)) {
    1.10  		/* idle "process".
    1.11  		 * make sure interrupts are enabled before halting
    1.12  		 */
    1.13  		enable_intr();
    1.14  		halt_cpu();
    1.15 +		printf("fuck you!\n");
    1.16  		/* this won't return, it'll just wake up in an interrupt later */
    1.17  	}
    1.18  
    1.19 -	disable_intr();
    1.20 -
    1.21  	/* if the current process exhausted its timeslice,
    1.22  	 * move it to the back of the queue.
    1.23  	 */
    1.24 @@ -54,11 +55,13 @@
    1.25  {
    1.26  	int istate;
    1.27  	struct proc_list *q;
    1.28 -	struct process *proc = get_process(pid);
    1.29 +	struct process *proc;
    1.30  
    1.31  	istate = get_intr_state();
    1.32  	disable_intr();
    1.33  
    1.34 +	proc = get_process(pid);
    1.35 +
    1.36  	q = state == STATE_RUNNING ? &runq : &waitq;
    1.37  
    1.38  	ins_back(q, proc);