Link: https://lore.kernel.org/r/20260217200002.683975158@linuxfoundation.org Tested-by: Florian Fainelli <florian.fainelli@broadcom.com> Tested-by: Takeshi Ogasawara <takeshi.ogasawara@futuring-girl.com> Tested-by: Peter Schneider <pschneider1968@googlemail.com> Tested-by: Jon Hunter <jonathanh@nvidia.com> Tested-by: Salvatore Bonaccorso <carnil@debian.org> Tested-by: Brett A C Sheffield <bacs@librecast.net> Tested-by: Mark Brown <broonie@kernel.org> Tested-by: Luna Jernberg <droidbittin@gmail.com> Tested-by: Ronald Warsow <rwarsow@gmx.de> Tested-by: Justin M. Forbes <jforbes@fedoraproject.org> Tested-by: Ron Economos <re@w6rz.net> Tested-by: Miguel Ojeda <ojeda@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
55 lines
1.6 KiB
C
55 lines
1.6 KiB
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* (C) 2016 SUSE Software Solutions GmbH
|
|
* Thomas Renninger <trenn@suse.de>
|
|
*/
|
|
|
|
#ifndef __CPUPOWER_RAPL_H__
|
|
#define __CPUPOWER_RAPL_H__
|
|
|
|
#define PATH_TO_POWERCAP "/sys/devices/virtual/powercap"
|
|
#define PATH_TO_RAPL "/sys/devices/virtual/powercap/intel-rapl"
|
|
#define PATH_TO_RAPL_CLASS "/sys/devices/virtual/powercap/intel-rapl"
|
|
|
|
#define POWERCAP_MAX_CHILD_ZONES 10
|
|
#define POWERCAP_MAX_TREE_DEPTH 10
|
|
|
|
#define MAX_LINE_LEN 4096
|
|
#define SYSFS_PATH_MAX 255
|
|
|
|
#include <stdint.h>
|
|
|
|
struct powercap_zone {
|
|
char name[MAX_LINE_LEN];
|
|
/*
|
|
* sys_name relative to PATH_TO_POWERCAP,
|
|
* do not forget the / in between
|
|
*/
|
|
char sys_name[SYSFS_PATH_MAX];
|
|
int tree_depth;
|
|
struct powercap_zone *parent;
|
|
struct powercap_zone *children[POWERCAP_MAX_CHILD_ZONES];
|
|
/* More possible caps or attributes to be added? */
|
|
uint32_t has_power_uw:1,
|
|
has_energy_uj:1;
|
|
|
|
};
|
|
|
|
int powercap_walk_zones(struct powercap_zone *zone,
|
|
int (*f)(struct powercap_zone *zone));
|
|
|
|
struct powercap_zone *powercap_init_zones(void);
|
|
int powercap_get_enabled(int *mode);
|
|
int powercap_set_enabled(int mode);
|
|
int powercap_get_driver(char *driver, int buflen);
|
|
|
|
int powercap_get_max_energy_range_uj(struct powercap_zone *zone, uint64_t *val);
|
|
int powercap_get_energy_uj(struct powercap_zone *zone, uint64_t *val);
|
|
int powercap_get_max_power_range_uw(struct powercap_zone *zone, uint64_t *val);
|
|
int powercap_get_power_uw(struct powercap_zone *zone, uint64_t *val);
|
|
int powercap_zone_get_enabled(struct powercap_zone *zone, int *mode);
|
|
int powercap_zone_set_enabled(struct powercap_zone *zone, int mode);
|
|
|
|
|
|
#endif /* __CPUPOWER_RAPL_H__ */
|