1*f74f8bb2SNam CaoRULE = always ((RT and SLEEP) imply (RT_FRIENDLY_SLEEP or ALLOWLIST)) 2*f74f8bb2SNam Cao 3*f74f8bb2SNam CaoRT_FRIENDLY_SLEEP = (RT_VALID_SLEEP_REASON or KERNEL_THREAD) 4*f74f8bb2SNam Cao and ((not WAKE) until RT_FRIENDLY_WAKE) 5*f74f8bb2SNam Cao 6*f74f8bb2SNam CaoRT_VALID_SLEEP_REASON = FUTEX_WAIT 7*f74f8bb2SNam Cao or RT_FRIENDLY_NANOSLEEP 8*f74f8bb2SNam Cao 9*f74f8bb2SNam CaoRT_FRIENDLY_NANOSLEEP = CLOCK_NANOSLEEP 10*f74f8bb2SNam Cao and NANOSLEEP_TIMER_ABSTIME 11*f74f8bb2SNam Cao and (NANOSLEEP_CLOCK_MONOTONIC or NANOSLEEP_CLOCK_TAI) 12*f74f8bb2SNam Cao 13*f74f8bb2SNam CaoRT_FRIENDLY_WAKE = WOKEN_BY_EQUAL_OR_HIGHER_PRIO 14*f74f8bb2SNam Cao or WOKEN_BY_HARDIRQ 15*f74f8bb2SNam Cao or WOKEN_BY_NMI 16*f74f8bb2SNam Cao or ABORT_SLEEP 17*f74f8bb2SNam Cao or KTHREAD_SHOULD_STOP 18*f74f8bb2SNam Cao 19*f74f8bb2SNam CaoALLOWLIST = BLOCK_ON_RT_MUTEX 20*f74f8bb2SNam Cao or FUTEX_LOCK_PI 21*f74f8bb2SNam Cao or TASK_IS_RCU 22*f74f8bb2SNam Cao or TASK_IS_MIGRATION 23