projects/linux·blob master · refs

20 lines · 657 B

1RULE = always ((RT and SLEEP and USER_THREAD) imply (RT_FRIENDLY_SLEEP or ALLOWLIST))
2
3RT_FRIENDLY_SLEEP = RT_VALID_SLEEP_REASON
4 and ((not SCHEDULE_IN) until RT_FRIENDLY_WAKE)
5
6RT_VALID_SLEEP_REASON = FUTEX_WAIT
7 or RT_FRIENDLY_NANOSLEEP
8 or EPOLL_WAIT
9
10RT_FRIENDLY_NANOSLEEP = CLOCK_NANOSLEEP
11 and NANOSLEEP_TIMER_ABSTIME
12 and not NANOSLEEP_CLOCK_REALTIME
13
14RT_FRIENDLY_WAKE = WOKEN_BY_EQUAL_OR_HIGHER_PRIO
15 or WOKEN_BY_HARDIRQ
16 or WOKEN_BY_NMI
17 or ABORT_SLEEP
18
19ALLOWLIST = BLOCK_ON_RT_MUTEX
20 or FUTEX_LOCK_PI