Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/tools/power/cpupower/lib/powercap.h
26292 views
1
/* SPDX-License-Identifier: GPL-2.0-only */
2
/*
3
* (C) 2016 SUSE Software Solutions GmbH
4
* Thomas Renninger <[email protected]>
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 10
15
#define POWERCAP_MAX_TREE_DEPTH 10
16
17
#define MAX_LINE_LEN 4096
18
#define SYSFS_PATH_MAX 255
19
20
#include <stdint.h>
21
22
struct powercap_zone {
23
char name[MAX_LINE_LEN];
24
/*
25
* sys_name relative to PATH_TO_POWERCAP,
26
* do not forget the / in between
27
*/
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
38
int powercap_walk_zones(struct powercap_zone *zone,
39
int (*f)(struct powercap_zone *zone));
40
41
struct powercap_zone *powercap_init_zones(void);
42
int powercap_get_enabled(int *mode);
43
int powercap_set_enabled(int mode);
44
int powercap_get_driver(char *driver, int buflen);
45
46
int powercap_get_max_energy_range_uj(struct powercap_zone *zone, uint64_t *val);
47
int powercap_get_energy_uj(struct powercap_zone *zone, uint64_t *val);
48
int powercap_get_max_power_range_uw(struct powercap_zone *zone, uint64_t *val);
49
int powercap_get_power_uw(struct powercap_zone *zone, uint64_t *val);
50
int powercap_zone_get_enabled(struct powercap_zone *zone, int *mode);
51
int powercap_zone_set_enabled(struct powercap_zone *zone, int mode);
52
53
54
#endif /* __CPUPOWER_RAPL_H__ */
55
56