1 /* SPDX-License-Identifier: GPL-2.0-only */ 1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 2 /* 3 * (C) 2016 SUSE Software Solutions GmbH 3 * (C) 2016 SUSE Software Solutions GmbH 4 * Thomas Renninger <trenn@suse.de> 4 * Thomas Renninger <trenn@suse.de> 5 */ 5 */ 6 6 7 #ifndef __CPUPOWER_RAPL_H__ 7 #ifndef __CPUPOWER_RAPL_H__ 8 #define __CPUPOWER_RAPL_H__ 8 #define __CPUPOWER_RAPL_H__ 9 9 10 #define PATH_TO_POWERCAP "/sys/devices/virtual 10 #define PATH_TO_POWERCAP "/sys/devices/virtual/powercap" 11 #define PATH_TO_RAPL "/sys/devices/virtual/pow 11 #define PATH_TO_RAPL "/sys/devices/virtual/powercap/intel-rapl" 12 #define PATH_TO_RAPL_CLASS "/sys/devices/virtu 12 #define PATH_TO_RAPL_CLASS "/sys/devices/virtual/powercap/intel-rapl" 13 13 14 #define POWERCAP_MAX_CHILD_ZONES 10 14 #define POWERCAP_MAX_CHILD_ZONES 10 15 #define POWERCAP_MAX_TREE_DEPTH 10 15 #define POWERCAP_MAX_TREE_DEPTH 10 16 16 17 #define MAX_LINE_LEN 4096 17 #define MAX_LINE_LEN 4096 18 #define SYSFS_PATH_MAX 255 18 #define SYSFS_PATH_MAX 255 19 19 20 #include <stdint.h> 20 #include <stdint.h> 21 21 22 struct powercap_zone { 22 struct powercap_zone { 23 char name[MAX_LINE_LEN]; 23 char name[MAX_LINE_LEN]; 24 /* 24 /* 25 * sys_name relative to PATH_TO_POWERC 25 * sys_name relative to PATH_TO_POWERCAP, 26 * do not forget the / in between 26 * do not forget the / in between 27 */ 27 */ 28 char sys_name[SYSFS_PATH_MAX]; 28 char sys_name[SYSFS_PATH_MAX]; 29 int tree_depth; 29 int tree_depth; 30 struct powercap_zone *parent; 30 struct powercap_zone *parent; 31 struct powercap_zone *children[POWERCA 31 struct powercap_zone *children[POWERCAP_MAX_CHILD_ZONES]; 32 /* More possible caps or attributes to 32 /* More possible caps or attributes to be added? */ 33 uint32_t has_power_uw:1, 33 uint32_t has_power_uw:1, 34 has_energy_uj:1; 34 has_energy_uj:1; 35 35 36 }; 36 }; 37 37 38 int powercap_walk_zones(struct powercap_zone * 38 int powercap_walk_zones(struct powercap_zone *zone, 39 int (*f)(struct powerc 39 int (*f)(struct powercap_zone *zone)); 40 40 41 struct powercap_zone *powercap_init_zones(void 41 struct powercap_zone *powercap_init_zones(void); 42 int powercap_get_enabled(int *mode); 42 int powercap_get_enabled(int *mode); 43 int powercap_set_enabled(int mode); 43 int powercap_set_enabled(int mode); 44 int powercap_get_driver(char *driver, int bufl 44 int powercap_get_driver(char *driver, int buflen); 45 45 46 int powercap_get_max_energy_range_uj(struct po 46 int powercap_get_max_energy_range_uj(struct powercap_zone *zone, uint64_t *val); 47 int powercap_get_energy_uj(struct powercap_zon 47 int powercap_get_energy_uj(struct powercap_zone *zone, uint64_t *val); 48 int powercap_get_max_power_range_uw(struct pow 48 int powercap_get_max_power_range_uw(struct powercap_zone *zone, uint64_t *val); 49 int powercap_get_power_uw(struct powercap_zone 49 int powercap_get_power_uw(struct powercap_zone *zone, uint64_t *val); 50 int powercap_zone_get_enabled(struct powercap_ 50 int powercap_zone_get_enabled(struct powercap_zone *zone, int *mode); 51 int powercap_zone_set_enabled(struct powercap_ 51 int powercap_zone_set_enabled(struct powercap_zone *zone, int mode); 52 52 53 53 54 #endif /* __CPUPOWER_RAPL_H__ */ 54 #endif /* __CPUPOWER_RAPL_H__ */ 55 55
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.