| 292 | } |
| 293 | |
| 294 | static __inline void |
| 295 | critical_exit(void) |
| 296 | { |
| 297 | #ifndef FSTACK |
| 298 | struct thread_lite *td; |
| 299 | |
| 300 | td = (struct thread_lite *)curthread; |
| 301 | KASSERT(td->td_critnest != 0, |
| 302 | ("critical_exit: td_critnest == 0")); |
| 303 | atomic_interrupt_fence(); |
| 304 | td->td_critnest--; |
| 305 | atomic_interrupt_fence(); |
| 306 | if (__predict_false(td->td_owepreempt)) |
| 307 | critical_exit_preempt(); |
| 308 | #endif |
| 309 | } |
| 310 | #endif |
| 311 | |
| 312 | #ifdef EARLY_PRINTF |
no test coverage detected