Lines Matching +full:0 +full:- +full:mon

1 // SPDX-License-Identifier: GPL-2.0
25 static void ltl_atoms_fetch(struct task_struct *task, struct ltl_monitor *mon) in ltl_atoms_fetch() argument
28 * This includes "actual" real-time tasks and also PI-boosted in ltl_atoms_fetch()
29 * tasks. A task being PI-boosted means it is blocking an "actual" in ltl_atoms_fetch()
30 * real-task, therefore it should also obey the monitor's rule, in ltl_atoms_fetch()
31 * otherwise the "actual" real-task may be delayed. in ltl_atoms_fetch()
33 ltl_atom_set(mon, LTL_RT, rt_or_dl_task(task)); in ltl_atoms_fetch()
36 static void ltl_atoms_init(struct task_struct *task, struct ltl_monitor *mon, bool task_creation) in ltl_atoms_init() argument
38 ltl_atom_set(mon, LTL_SLEEP, false); in ltl_atoms_init()
39 ltl_atom_set(mon, LTL_WAKE, false); in ltl_atoms_init()
40 ltl_atom_set(mon, LTL_ABORT_SLEEP, false); in ltl_atoms_init()
41 ltl_atom_set(mon, LTL_WOKEN_BY_HARDIRQ, false); in ltl_atoms_init()
42 ltl_atom_set(mon, LTL_WOKEN_BY_NMI, false); in ltl_atoms_init()
43 ltl_atom_set(mon, LTL_WOKEN_BY_EQUAL_OR_HIGHER_PRIO, false); in ltl_atoms_init()
46 ltl_atom_set(mon, LTL_KTHREAD_SHOULD_STOP, false); in ltl_atoms_init()
47 ltl_atom_set(mon, LTL_NANOSLEEP_CLOCK_MONOTONIC, false); in ltl_atoms_init()
48 ltl_atom_set(mon, LTL_NANOSLEEP_CLOCK_TAI, false); in ltl_atoms_init()
49 ltl_atom_set(mon, LTL_NANOSLEEP_TIMER_ABSTIME, false); in ltl_atoms_init()
50 ltl_atom_set(mon, LTL_CLOCK_NANOSLEEP, false); in ltl_atoms_init()
51 ltl_atom_set(mon, LTL_FUTEX_WAIT, false); in ltl_atoms_init()
52 ltl_atom_set(mon, LTL_FUTEX_LOCK_PI, false); in ltl_atoms_init()
53 ltl_atom_set(mon, LTL_BLOCK_ON_RT_MUTEX, false); in ltl_atoms_init()
56 if (task->flags & PF_KTHREAD) { in ltl_atoms_init()
57 ltl_atom_set(mon, LTL_KERNEL_THREAD, true); in ltl_atoms_init()
60 ltl_atom_set(mon, LTL_FUTEX_WAIT, false); in ltl_atoms_init()
61 ltl_atom_set(mon, LTL_FUTEX_LOCK_PI, false); in ltl_atoms_init()
62 ltl_atom_set(mon, LTL_NANOSLEEP_CLOCK_MONOTONIC, false); in ltl_atoms_init()
63 ltl_atom_set(mon, LTL_NANOSLEEP_CLOCK_TAI, false); in ltl_atoms_init()
64 ltl_atom_set(mon, LTL_NANOSLEEP_TIMER_ABSTIME, false); in ltl_atoms_init()
65 ltl_atom_set(mon, LTL_CLOCK_NANOSLEEP, false); in ltl_atoms_init()
67 if (strstarts(task->comm, "migration/")) in ltl_atoms_init()
68 ltl_atom_set(mon, LTL_TASK_IS_MIGRATION, true); in ltl_atoms_init()
70 ltl_atom_set(mon, LTL_TASK_IS_MIGRATION, false); in ltl_atoms_init()
72 if (strstarts(task->comm, "rcu")) in ltl_atoms_init()
73 ltl_atom_set(mon, LTL_TASK_IS_RCU, true); in ltl_atoms_init()
75 ltl_atom_set(mon, LTL_TASK_IS_RCU, false); in ltl_atoms_init()
77 ltl_atom_set(mon, LTL_KTHREAD_SHOULD_STOP, false); in ltl_atoms_init()
78 ltl_atom_set(mon, LTL_KERNEL_THREAD, false); in ltl_atoms_init()
79 ltl_atom_set(mon, LTL_TASK_IS_RCU, false); in ltl_atoms_init()
80 ltl_atom_set(mon, LTL_TASK_IS_MIGRATION, false); in ltl_atoms_init()
103 if (current->prio <= task->prio) in handle_sched_waking()
123 struct ltl_monitor *mon; in handle_sys_enter() local
127 mon = ltl_get_monitor(current); in handle_sys_enter()
137 ltl_atom_set(mon, LTL_NANOSLEEP_CLOCK_MONOTONIC, args[0] == CLOCK_MONOTONIC); in handle_sys_enter()
138 ltl_atom_set(mon, LTL_NANOSLEEP_CLOCK_TAI, args[0] == CLOCK_TAI); in handle_sys_enter()
139 ltl_atom_set(mon, LTL_NANOSLEEP_TIMER_ABSTIME, args[1] == TIMER_ABSTIME); in handle_sys_enter()
170 struct ltl_monitor *mon = ltl_get_monitor(current); in handle_sys_exit() local
172 ltl_atom_set(mon, LTL_FUTEX_LOCK_PI, false); in handle_sys_exit()
173 ltl_atom_set(mon, LTL_FUTEX_WAIT, false); in handle_sys_exit()
174 ltl_atom_set(mon, LTL_NANOSLEEP_CLOCK_MONOTONIC, false); in handle_sys_exit()
175 ltl_atom_set(mon, LTL_NANOSLEEP_CLOCK_TAI, false); in handle_sys_exit()
176 ltl_atom_set(mon, LTL_NANOSLEEP_TIMER_ABSTIME, false); in handle_sys_exit()
202 return 0; in enable_sleep()