| 522 | } |
| 523 | |
| 524 | void |
| 525 | runq_remove_idx(struct runq *rq, struct thread *td, u_char *idx) |
| 526 | { |
| 527 | struct rqhead *rqh; |
| 528 | u_char pri; |
| 529 | |
| 530 | KASSERT(td->td_flags & TDF_INMEM, |
| 531 | ("runq_remove_idx: thread swapped out")); |
| 532 | pri = td->td_rqindex; |
| 533 | KASSERT(pri < RQ_NQS, ("runq_remove_idx: Invalid index %d\n", pri)); |
| 534 | rqh = &rq->rq_queues[pri]; |
| 535 | CTR4(KTR_RUNQ, "runq_remove_idx: td=%p, pri=%d %d rqh=%p", |
| 536 | td, td->td_priority, pri, rqh); |
| 537 | TAILQ_REMOVE(rqh, td, td_runq); |
| 538 | if (TAILQ_EMPTY(rqh)) { |
| 539 | CTR0(KTR_RUNQ, "runq_remove_idx: empty"); |
| 540 | runq_clrbit(rq, pri); |
| 541 | if (idx != NULL && *idx == pri) |
| 542 | *idx = (pri + 1) % RQ_NQS; |
| 543 | } |
| 544 | } |
no test coverage detected