brintos

brintos / linux-shallow public Read only

0
0
Text · 1.6 KiB · c049c10 Raw
55 lines · c
1/* SPDX-License-Identifier: GPL-2.0-only */2/*3 *  (C) 2016 SUSE Software Solutions GmbH4 *           Thomas Renninger <trenn@suse.de>5 */6 7#ifndef __CPUPOWER_RAPL_H__8#define __CPUPOWER_RAPL_H__9 10#define PATH_TO_POWERCAP "/sys/devices/virtual/powercap"11#define PATH_TO_RAPL "/sys/devices/virtual/powercap/intel-rapl"12#define PATH_TO_RAPL_CLASS "/sys/devices/virtual/powercap/intel-rapl"13 14#define POWERCAP_MAX_CHILD_ZONES 1015#define POWERCAP_MAX_TREE_DEPTH 1016 17#define MAX_LINE_LEN 409618#define SYSFS_PATH_MAX 25519 20#include <stdint.h>21 22struct powercap_zone {23	char name[MAX_LINE_LEN];24	/*25	 * sys_name relative to PATH_TO_POWERCAP,26	 * do not forget the / in between27	 */28	char sys_name[SYSFS_PATH_MAX];29	int tree_depth;30	struct powercap_zone *parent;31	struct powercap_zone *children[POWERCAP_MAX_CHILD_ZONES];32	/* More possible caps or attributes to be added? */33	uint32_t has_power_uw:1,34		 has_energy_uj:1;35 36};37 38int powercap_walk_zones(struct powercap_zone *zone,39			int (*f)(struct powercap_zone *zone));40 41struct powercap_zone *powercap_init_zones(void);42int powercap_get_enabled(int *mode);43int powercap_set_enabled(int mode);44int powercap_get_driver(char *driver, int buflen);45 46int powercap_get_max_energy_range_uj(struct powercap_zone *zone, uint64_t *val);47int powercap_get_energy_uj(struct powercap_zone *zone, uint64_t *val);48int powercap_get_max_power_range_uw(struct powercap_zone *zone, uint64_t *val);49int powercap_get_power_uw(struct powercap_zone *zone, uint64_t *val);50int powercap_zone_get_enabled(struct powercap_zone *zone, int *mode);51int powercap_zone_set_enabled(struct powercap_zone *zone, int mode);52 53 54#endif /* __CPUPOWER_RAPL_H__ */55