| RULE = always ((RT and SLEEP and USER_THREAD) imply (RT_FRIENDLY_SLEEP or ALLOWLIST)) | |
| RT_FRIENDLY_SLEEP = RT_VALID_SLEEP_REASON | |
| and ((not SCHEDULE_IN) until RT_FRIENDLY_WAKE) | |
| RT_VALID_SLEEP_REASON = FUTEX_WAIT | |
| or RT_FRIENDLY_NANOSLEEP | |
| or EPOLL_WAIT | |
| RT_FRIENDLY_NANOSLEEP = CLOCK_NANOSLEEP | |
| and NANOSLEEP_TIMER_ABSTIME | |
| and not NANOSLEEP_CLOCK_REALTIME | |
| RT_FRIENDLY_WAKE = WOKEN_BY_EQUAL_OR_HIGHER_PRIO | |
| or WOKEN_BY_HARDIRQ | |
| or WOKEN_BY_NMI | |
| or ABORT_SLEEP | |
| ALLOWLIST = BLOCK_ON_RT_MUTEX | |
| or FUTEX_LOCK_PI |