Robin Randhawa | 1f998b3 | 2015-06-29 18:01:58 +0100 | [diff] [blame] | 1 | #ifndef _LINUX_SCHED_ENERGY_H |
| 2 | #define _LINUX_SCHED_ENERGY_H |
| 3 | |
| 4 | #include <linux/sched.h> |
| 5 | #include <linux/slab.h> |
| 6 | |
| 7 | /* |
| 8 | * There doesn't seem to be an NR_CPUS style max number of sched domain |
| 9 | * levels so here's an arbitrary constant one for the moment. |
| 10 | * |
| 11 | * The levels alluded to here correspond to entries in struct |
| 12 | * sched_domain_topology_level that are meant to be populated by arch |
| 13 | * specific code (topology.c). |
| 14 | */ |
| 15 | #define NR_SD_LEVELS 8 |
| 16 | |
| 17 | #define SD_LEVEL0 0 |
| 18 | #define SD_LEVEL1 1 |
| 19 | #define SD_LEVEL2 2 |
| 20 | #define SD_LEVEL3 3 |
| 21 | #define SD_LEVEL4 4 |
| 22 | #define SD_LEVEL5 5 |
| 23 | #define SD_LEVEL6 6 |
| 24 | #define SD_LEVEL7 7 |
| 25 | |
| 26 | /* |
| 27 | * Convenience macro for iterating through said sd levels. |
| 28 | */ |
| 29 | #define for_each_possible_sd_level(level) \ |
| 30 | for (level = 0; level < NR_SD_LEVELS; level++) |
| 31 | |
Patrick Bellasi | 2178e84 | 2016-07-22 11:35:59 +0100 | [diff] [blame] | 32 | #ifdef CONFIG_SMP |
| 33 | |
Robin Randhawa | 1f998b3 | 2015-06-29 18:01:58 +0100 | [diff] [blame] | 34 | extern struct sched_group_energy *sge_array[NR_CPUS][NR_SD_LEVELS]; |
| 35 | |
| 36 | void init_sched_energy_costs(void); |
| 37 | |
Patrick Bellasi | 2178e84 | 2016-07-22 11:35:59 +0100 | [diff] [blame] | 38 | #else |
| 39 | |
| 40 | #define init_sched_energy_costs() do { } while (0) |
| 41 | |
| 42 | #endif /* CONFIG_SMP */ |
| 43 | |
Robin Randhawa | 1f998b3 | 2015-06-29 18:01:58 +0100 | [diff] [blame] | 44 | #endif |