- Timestamp:
- 2005-10-17T23:31:41Z (20 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 4b2c872d
- Parents:
- 75eacab
- Location:
- src/proc
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
src/proc/scheduler.c
r75eacab r22f7769 126 126 127 127 loop: 128 cpu_priority_high();128 interrupts_disable(); 129 129 130 130 spinlock_lock(&CPU->lock); … … 132 132 spinlock_unlock(&CPU->lock); 133 133 134 cpu_priority_low();134 interrupts_enable(); 135 135 136 136 if (n == 0) { … … 156 156 } 157 157 158 cpu_priority_high();158 interrupts_disable(); 159 159 160 160 i = 0; … … 197 197 198 198 t->ticks = us2ticks((i+1)*10000); 199 t->pri = i; /* eventually correct rq index */199 t->priority = i; /* eventually correct rq index */ 200 200 201 201 /* … … 262 262 void scheduler(void) 263 263 { 264 volatile pri_t pri;264 volatile ipl_t ipl; 265 265 266 266 ASSERT(CPU != NULL); 267 267 268 pri = cpu_priority_high();268 ipl = interrupts_disable(); 269 269 270 270 if (haltstate) … … 282 282 before_thread_runs(); 283 283 spinlock_unlock(&THREAD->lock); 284 cpu_priority_restore(THREAD->saved_context.pri);284 interrupts_restore(THREAD->saved_context.ipl); 285 285 return; 286 286 } 287 287 288 288 /* 289 * CPU priorityof preempted thread is recorded here290 * to facilitate scheduler() invocations from 291 * c pu_priority_high()'ed code (e.g. waitq_sleep_timeout()).292 */ 293 THREAD->saved_context. pri = pri;289 * Interrupt priority level of preempted thread is recorded here 290 * to facilitate scheduler() invocations from interrupts_disable()'d 291 * code (e.g. waitq_sleep_timeout()). 292 */ 293 THREAD->saved_context.ipl = ipl; 294 294 } 295 295 … … 372 372 * Prefer the thread after it's woken up. 373 373 */ 374 THREAD->pri = -1;374 THREAD->priority = -1; 375 375 376 376 /* … … 407 407 408 408 spinlock_lock(&THREAD->lock); 409 priority = THREAD->pri ;409 priority = THREAD->priority; 410 410 spinlock_unlock(&THREAD->lock); 411 411 … … 447 447 448 448 #ifdef SCHEDULER_VERBOSE 449 printf("cpu%d: tid %d (pri =%d,ticks=%d,nrdy=%d)\n", CPU->id, THREAD->tid, THREAD->pri, THREAD->ticks, CPU->nrdy);449 printf("cpu%d: tid %d (priority=%d,ticks=%d,nrdy=%d)\n", CPU->id, THREAD->tid, THREAD->priority, THREAD->ticks, CPU->nrdy); 450 450 #endif 451 451 … … 473 473 thread_t *t; 474 474 int count, i, j, k = 0; 475 pri_t pri;475 ipl_t ipl; 476 476 477 477 loop: … … 487 487 * passes. Each time get the most up to date counts. 488 488 */ 489 pri = cpu_priority_high();489 ipl = interrupts_disable(); 490 490 spinlock_lock(&CPU->lock); 491 491 count = nrdy / config.cpu_active; 492 492 count -= CPU->nrdy; 493 493 spinlock_unlock(&CPU->lock); 494 cpu_priority_restore(pri);494 interrupts_restore(ipl); 495 495 496 496 if (count <= 0) … … 515 515 continue; 516 516 517 restart: pri = cpu_priority_high();517 restart: ipl = interrupts_disable(); 518 518 r = &cpu->rq[j]; 519 519 spinlock_lock(&r->lock); 520 520 if (r->n == 0) { 521 521 spinlock_unlock(&r->lock); 522 cpu_priority_restore(pri);522 interrupts_restore(ipl); 523 523 continue; 524 524 } … … 549 549 /* Release all locks and try again. */ 550 550 spinlock_unlock(&r->lock); 551 cpu_priority_restore(pri);551 interrupts_restore(ipl); 552 552 goto restart; 553 553 } … … 581 581 thread_ready(t); 582 582 583 cpu_priority_restore(pri);583 interrupts_restore(ipl); 584 584 585 585 if (--count == 0) … … 593 593 continue; 594 594 } 595 cpu_priority_restore(pri);595 interrupts_restore(ipl); 596 596 } 597 597 } -
src/proc/task.c
r75eacab r22f7769 65 65 task_t *task_create(vm_t *m) 66 66 { 67 pri_t pri;67 ipl_t ipl; 68 68 task_t *ta; 69 69 … … 75 75 ta->vm = m; 76 76 77 pri = cpu_priority_high();77 ipl = interrupts_disable(); 78 78 spinlock_lock(&tasks_lock); 79 79 list_append(&ta->tasks_link, &tasks_head); 80 80 spinlock_unlock(&tasks_lock); 81 cpu_priority_restore(pri);81 interrupts_restore(ipl); 82 82 } 83 83 return ta; -
src/proc/thread.c
r75eacab r22f7769 68 68 * function returns. 69 69 * 70 * cpu_priority_high() is assumed.70 * interrupts_disable() is assumed. 71 71 * 72 72 */ … … 80 80 81 81 spinlock_unlock(&THREAD->lock); 82 cpu_priority_low();82 interrupts_enable(); 83 83 84 84 f(arg); … … 113 113 cpu_t *cpu; 114 114 runq_t *r; 115 pri_t pri;115 ipl_t ipl; 116 116 int i, avg, send_ipi = 0; 117 117 118 pri = cpu_priority_high();118 ipl = interrupts_disable(); 119 119 120 120 spinlock_lock(&t->lock); 121 121 122 i = (t->pri < RQ_COUNT -1) ? ++t->pri : t->pri;122 i = (t->priority < RQ_COUNT -1) ? ++t->priority : t->priority; 123 123 124 124 cpu = CPU; … … 149 149 spinlock_unlock(&cpu->lock); 150 150 151 cpu_priority_restore(pri);151 interrupts_restore(ipl); 152 152 } 153 153 … … 172 172 t = (thread_t *) malloc(sizeof(thread_t)); 173 173 if (t) { 174 pri_t pri;174 ipl_t ipl; 175 175 176 176 spinlock_initialize(&t->lock); … … 181 181 } 182 182 183 pri = cpu_priority_high();183 ipl = interrupts_disable(); 184 184 spinlock_lock(&tidlock); 185 185 t->tid = ++last_tid; 186 186 spinlock_unlock(&tidlock); 187 cpu_priority_restore(pri);187 interrupts_restore(ipl); 188 188 189 189 memsetb(frame_ks, THREAD_STACK_SIZE, 0); … … 200 200 the_initialize((the_t *) t->kstack); 201 201 202 pri = cpu_priority_high();203 t->saved_context. pri = cpu_priority_read();204 cpu_priority_restore(pri);202 ipl = interrupts_disable(); 203 t->saved_context.ipl = interrupts_read(); 204 interrupts_restore(ipl); 205 205 206 206 t->thread_code = func; 207 207 t->thread_arg = arg; 208 208 t->ticks = -1; 209 t->pri = -1; /* start in rq[0] */209 t->priority = -1; /* start in rq[0] */ 210 210 t->cpu = NULL; 211 211 t->flags = 0; … … 228 228 * Register this thread in the system-wide list. 229 229 */ 230 pri = cpu_priority_high();230 ipl = interrupts_disable(); 231 231 spinlock_lock(&threads_lock); 232 232 list_append(&t->threads_link, &threads_head); … … 240 240 spinlock_unlock(&task->lock); 241 241 242 cpu_priority_restore(pri);242 interrupts_restore(ipl); 243 243 } 244 244 … … 255 255 void thread_exit(void) 256 256 { 257 pri_t pri;257 ipl_t ipl; 258 258 259 259 restart: 260 pri = cpu_priority_high();260 ipl = interrupts_disable(); 261 261 spinlock_lock(&THREAD->lock); 262 262 if (THREAD->timeout_pending) { /* busy waiting for timeouts in progress */ 263 263 spinlock_unlock(&THREAD->lock); 264 cpu_priority_restore(pri);264 interrupts_restore(ipl); 265 265 goto restart; 266 266 } … … 312 312 void thread_register_call_me(void (* call_me)(void *), void *call_me_with) 313 313 { 314 pri_t pri;315 316 pri = cpu_priority_high();314 ipl_t ipl; 315 316 ipl = interrupts_disable(); 317 317 spinlock_lock(&THREAD->lock); 318 318 THREAD->call_me = call_me; 319 319 THREAD->call_me_with = call_me_with; 320 320 spinlock_unlock(&THREAD->lock); 321 cpu_priority_restore(pri);322 } 321 interrupts_restore(ipl); 322 }
Note:
See TracChangeset
for help on using the changeset viewer.
