xref: /linux/tools/verification/models/rtapp/sleep.ltl (revision 4ff261e725d7376c12e745fdbe8a33cd6dbd5a83)
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