Frederic Weisbecker | 7863406 | 2017-10-27 04:42:28 +0200 | [diff] [blame] | 1 | #ifndef _LINUX_SCHED_ISOLATION_H |
| 2 | #define _LINUX_SCHED_ISOLATION_H |
| 3 | |
| 4 | #include <linux/cpumask.h> |
| 5 | #include <linux/init.h> |
| 6 | #include <linux/tick.h> |
| 7 | |
Frederic Weisbecker | 5c4991e | 2017-10-27 04:42:34 +0200 | [diff] [blame^] | 8 | #ifdef CONFIG_CPU_ISOLATION |
Frederic Weisbecker | e179f5a | 2017-10-27 04:42:32 +0200 | [diff] [blame] | 9 | DECLARE_STATIC_KEY_FALSE(housekeeping_overriden); |
Frederic Weisbecker | 7e56a1c | 2017-10-27 04:42:31 +0200 | [diff] [blame] | 10 | extern int housekeeping_any_cpu(void); |
| 11 | extern const struct cpumask *housekeeping_cpumask(void); |
| 12 | extern void housekeeping_affine(struct task_struct *t); |
| 13 | extern bool housekeeping_test_cpu(int cpu); |
Frederic Weisbecker | 7863406 | 2017-10-27 04:42:28 +0200 | [diff] [blame] | 14 | extern void __init housekeeping_init(void); |
Frederic Weisbecker | 7e56a1c | 2017-10-27 04:42:31 +0200 | [diff] [blame] | 15 | |
Frederic Weisbecker | 7863406 | 2017-10-27 04:42:28 +0200 | [diff] [blame] | 16 | #else |
Frederic Weisbecker | 7863406 | 2017-10-27 04:42:28 +0200 | [diff] [blame] | 17 | |
Frederic Weisbecker | 9f0ca2d | 2017-10-27 04:42:30 +0200 | [diff] [blame] | 18 | static inline int housekeeping_any_cpu(void) |
| 19 | { |
Frederic Weisbecker | 9f0ca2d | 2017-10-27 04:42:30 +0200 | [diff] [blame] | 20 | return smp_processor_id(); |
| 21 | } |
Frederic Weisbecker | 7863406 | 2017-10-27 04:42:28 +0200 | [diff] [blame] | 22 | |
| 23 | static inline const struct cpumask *housekeeping_cpumask(void) |
| 24 | { |
Frederic Weisbecker | 7863406 | 2017-10-27 04:42:28 +0200 | [diff] [blame] | 25 | return cpu_possible_mask; |
| 26 | } |
| 27 | |
Frederic Weisbecker | 7e56a1c | 2017-10-27 04:42:31 +0200 | [diff] [blame] | 28 | static inline void housekeeping_affine(struct task_struct *t) { } |
| 29 | static inline void housekeeping_init(void) { } |
Frederic Weisbecker | 5c4991e | 2017-10-27 04:42:34 +0200 | [diff] [blame^] | 30 | #endif /* CONFIG_CPU_ISOLATION */ |
Frederic Weisbecker | 7e56a1c | 2017-10-27 04:42:31 +0200 | [diff] [blame] | 31 | |
Frederic Weisbecker | 204c083 | 2017-10-27 04:42:33 +0200 | [diff] [blame] | 32 | static inline bool housekeeping_cpu(int cpu) |
Frederic Weisbecker | 7863406 | 2017-10-27 04:42:28 +0200 | [diff] [blame] | 33 | { |
Frederic Weisbecker | 5c4991e | 2017-10-27 04:42:34 +0200 | [diff] [blame^] | 34 | #ifdef CONFIG_CPU_ISOLATION |
Frederic Weisbecker | e179f5a | 2017-10-27 04:42:32 +0200 | [diff] [blame] | 35 | if (static_branch_unlikely(&housekeeping_overriden)) |
Frederic Weisbecker | 7e56a1c | 2017-10-27 04:42:31 +0200 | [diff] [blame] | 36 | return housekeeping_test_cpu(cpu); |
Frederic Weisbecker | 7863406 | 2017-10-27 04:42:28 +0200 | [diff] [blame] | 37 | #endif |
| 38 | return true; |
| 39 | } |
| 40 | |
Frederic Weisbecker | 7863406 | 2017-10-27 04:42:28 +0200 | [diff] [blame] | 41 | #endif /* _LINUX_SCHED_ISOLATION_H */ |