push_off() and pop_off() in myproc()
This commit is contained in:
		
							parent
							
								
									3113643768
								
							
						
					
					
						commit
						5eb1cb4972
					
				
					 2 changed files with 9 additions and 4 deletions
				
			
		|  | @ -17,7 +17,7 @@ | |||
| 
 | ||||
| static void consputc(int); | ||||
| 
 | ||||
| static int panicked = 0; | ||||
| static volatile int panicked = 0; | ||||
| 
 | ||||
| static struct { | ||||
|   struct spinlock lock; | ||||
|  | @ -120,6 +120,7 @@ printf(char *fmt, ...) | |||
| void | ||||
| panic(char *s) | ||||
| { | ||||
|   cons.locking = 0; | ||||
|   printf("panic: "); | ||||
|   printf(s); | ||||
|   printf("\n"); | ||||
|  |  | |||
							
								
								
									
										10
									
								
								proc.c
									
										
									
									
									
								
							
							
						
						
									
										10
									
								
								proc.c
									
										
									
									
									
								
							|  | @ -11,7 +11,6 @@ struct { | |||
|   struct proc proc[NPROC]; | ||||
| } ptable; | ||||
| 
 | ||||
| // XXX riscv move somewhere else
 | ||||
| struct cpu cpus[NCPU]; | ||||
| 
 | ||||
| struct proc *initproc; | ||||
|  | @ -54,10 +53,10 @@ mycpu(void) { | |||
| // Return the current struct proc *.
 | ||||
| struct proc* | ||||
| myproc(void) { | ||||
|   // XXX push intr off
 | ||||
|   push_off(); | ||||
|   struct cpu *c = mycpu(); | ||||
|   struct proc *p = c->proc; | ||||
|   // XXX pop intr
 | ||||
|   pop_off(); | ||||
|   return p; | ||||
| } | ||||
| 
 | ||||
|  | @ -403,8 +402,13 @@ sched(void) | |||
| 
 | ||||
|   if(!holding(&ptable.lock)) | ||||
|     panic("sched ptable.lock"); | ||||
|   if(mycpu()->noff != 1) | ||||
|     panic("sched locks"); | ||||
|   if(p->state == RUNNING) | ||||
|     panic("sched running"); | ||||
|   if(intr_get()) | ||||
|     panic("sched interruptible"); | ||||
| 
 | ||||
|   intena = mycpu()->intena; | ||||
|   swtch(&p->context, &mycpu()->scheduler); | ||||
|   mycpu()->intena = intena; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Robert Morris
						Robert Morris