* Remove the load from a thread that is transitioning to a sleep state or * exiting. */
| 553 | * exiting. |
| 554 | */ |
| 555 | static void |
| 556 | tdq_load_rem(struct tdq *tdq, struct thread *td) |
| 557 | { |
| 558 | |
| 559 | TDQ_LOCK_ASSERT(tdq, MA_OWNED); |
| 560 | THREAD_LOCK_BLOCKED_ASSERT(td, MA_OWNED); |
| 561 | KASSERT(tdq->tdq_load != 0, |
| 562 | ("tdq_load_rem: Removing with 0 load on queue %d", TDQ_ID(tdq))); |
| 563 | |
| 564 | tdq->tdq_load--; |
| 565 | if ((td->td_flags & TDF_NOLOAD) == 0) |
| 566 | tdq->tdq_sysload--; |
| 567 | KTR_COUNTER0(KTR_SCHED, "load", tdq->tdq_loadname, tdq->tdq_load); |
| 568 | SDT_PROBE2(sched, , , load__change, (int)TDQ_ID(tdq), tdq->tdq_load); |
| 569 | } |
| 570 | |
| 571 | /* |
| 572 | * Bound timeshare latency by decreasing slice size as load increases. We |
no outgoing calls
no test coverage detected