- if ((reasons & AST_URGENT) && (wait_queue_assert_possible(self))) {
- reasons &= ~AST_URGENT;
- if ((reasons & (AST_BLOCK|AST_QUANTUM)) == 0) {
- mp_disable_preemption();
- mypr = current_processor();
- if (csw_needed(self, mypr)) {
- reasons |= (mypr->first_quantum ? AST_BLOCK : AST_QUANTUM);
- }
- mp_enable_preemption();
- }
- if (reasons & (AST_BLOCK | AST_QUANTUM)) {