Rev 2216 | Rev 2310 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2216 | Rev 2285 | ||
---|---|---|---|
Line 205... | Line 205... | ||
205 | goto loop; |
205 | goto loop; |
206 | } |
206 | } |
207 | 207 | ||
208 | interrupts_disable(); |
208 | interrupts_disable(); |
209 | 209 | ||
210 | for (i = 0; i<RQ_COUNT; i++) { |
210 | for (i = 0; i < RQ_COUNT; i++) { |
211 | r = &CPU->rq[i]; |
211 | r = &CPU->rq[i]; |
212 | spinlock_lock(&r->lock); |
212 | spinlock_lock(&r->lock); |
213 | if (r->n == 0) { |
213 | if (r->n == 0) { |
214 | /* |
214 | /* |
215 | * If this queue is empty, try a lower-priority queue. |
215 | * If this queue is empty, try a lower-priority queue. |
Line 449... | Line 449... | ||
449 | default: |
449 | default: |
450 | /* |
450 | /* |
451 | * Entering state is unexpected. |
451 | * Entering state is unexpected. |
452 | */ |
452 | */ |
453 | panic("tid%llu: unexpected state %s\n", THREAD->tid, |
453 | panic("tid%llu: unexpected state %s\n", THREAD->tid, |
454 | thread_states[THREAD->state]); |
454 | thread_states[THREAD->state]); |
455 | break; |
455 | break; |
456 | } |
456 | } |
457 | 457 | ||
458 | THREAD = NULL; |
458 | THREAD = NULL; |
459 | } |
459 | } |
Line 569... | Line 569... | ||
569 | 569 | ||
570 | /* |
570 | /* |
571 | * Searching least priority queues on all CPU's first and most priority |
571 | * Searching least priority queues on all CPU's first and most priority |
572 | * queues on all CPU's last. |
572 | * queues on all CPU's last. |
573 | */ |
573 | */ |
574 | for (j= RQ_COUNT - 1; j >= 0; j--) { |
574 | for (j = RQ_COUNT - 1; j >= 0; j--) { |
575 | for (i = 0; i < config.cpu_active; i++) { |
575 | for (i = 0; i < config.cpu_active; i++) { |
576 | link_t *l; |
576 | link_t *l; |
577 | runq_t *r; |
577 | runq_t *r; |
578 | cpu_t *cpu; |
578 | cpu_t *cpu; |
579 | 579 | ||
Line 610... | Line 610... | ||
610 | * steal threads whose FPU context is still in |
610 | * steal threads whose FPU context is still in |
611 | * CPU. |
611 | * CPU. |
612 | */ |
612 | */ |
613 | spinlock_lock(&t->lock); |
613 | spinlock_lock(&t->lock); |
614 | if ((!(t->flags & (THREAD_FLAG_WIRED | |
614 | if ((!(t->flags & (THREAD_FLAG_WIRED | |
615 | THREAD_FLAG_STOLEN))) && |
615 | THREAD_FLAG_STOLEN))) && |
616 | (!(t->fpu_context_engaged)) ) { |
616 | (!(t->fpu_context_engaged))) { |
617 | /* |
617 | /* |
618 | * Remove t from r. |
618 | * Remove t from r. |
619 | */ |
619 | */ |
620 | spinlock_unlock(&t->lock); |
620 | spinlock_unlock(&t->lock); |
621 | 621 |