geopm 3.1.1.dev591+g7396b7dc
GEOPM - Global Extensible Open Power Manager
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
CpufreqSysfsDriver.hpp
Go to the documentation of this file.
1/*
2 * Copyright (c) 2015 - 2025 Intel Corporation
3 * SPDX-License-Identifier: BSD-3-Clause
4 */
5
6#ifndef CPUFREQSYSFSDRIVER_HPP_INCLUDE
7#define CPUFREQSYSFSDRIVER_HPP_INCLUDE
8
9#include <map>
10#include <vector>
11
12#include "geopm_topo.h"
13
14#include "SysfsDriver.hpp"
15
16namespace geopm
17{
18 class IOGroup;
19 class PlatformTopo;
20
23 {
24 public:
34
37 const std::string &cpufreq_directory);
38 virtual ~CpufreqSysfsDriver() = default;
39 int domain_type(const std::string &name) const override;
40 std::string attribute_path(const std::string &name,
41 int domain_idx) override;
42 std::function<double(const std::string&)> signal_parse(const std::string &signal_name) const override;
43 std::function<std::string(double)> control_gen(const std::string &control_name) const override;
44 std::string driver(void) const override;
45 std::map<std::string, SysfsDriver::properties_s> properties(void) const override;
46 static std::string plugin_name(void);
47 static std::unique_ptr<IOGroup> make_plugin(void);
48 private:
49 const std::map<std::string, SysfsDriver::properties_s> M_PROPERTIES;
50 const std::map<std::string, std::vector<int> > M_CPUFREQ_CPUS_BY_RESOURCE;
51 const std::map<int, std::string> M_CPUFREQ_RESOURCE_BY_CPU;
52 geopm_domain_e m_domain;
53 const geopm::PlatformTopo &m_topo;
54 };
55}
56
57#endif
Class used to implement the CpufreqSysfsDriverGroup.
Definition CpufreqSysfsDriver.hpp:23
virtual ~CpufreqSysfsDriver()=default
std::function< std::string(double)> control_gen(const std::string &control_name) const override
Get a function to convert a control into a sysfs string.
Definition CpufreqSysfsDriver.cpp:231
std::map< std::string, SysfsDriver::properties_s > properties(void) const override
Query the meta data about a signal or control.
Definition CpufreqSysfsDriver.cpp:254
governor_e
Definition CpufreqSysfsDriver.hpp:25
@ GOVERNOR_ONDEMAND
Definition CpufreqSysfsDriver.hpp:28
@ NUM_GOVERNOR
Definition CpufreqSysfsDriver.hpp:32
@ GOVERNOR_USERSPACE
Definition CpufreqSysfsDriver.hpp:30
@ GOVERNOR_SCHEDUTIL
Definition CpufreqSysfsDriver.hpp:31
@ GOVERNOR_CONSERVATIVE
Definition CpufreqSysfsDriver.hpp:29
@ GOVERNOR_POWERSAVE
Definition CpufreqSysfsDriver.hpp:27
@ GOVERNOR_PERFORMANCE
Definition CpufreqSysfsDriver.hpp:26
std::string driver(void) const override
Definition CpufreqSysfsDriver.cpp:249
int domain_type(const std::string &name) const override
Get the PlatformTopo domain type for an named attribute.
Definition CpufreqSysfsDriver.cpp:134
CpufreqSysfsDriver()
Definition CpufreqSysfsDriver.cpp:93
std::function< double(const std::string &)> signal_parse(const std::string &signal_name) const override
Get function to convert contents of sysfs file into signal.
Definition CpufreqSysfsDriver.cpp:207
static std::unique_ptr< IOGroup > make_plugin(void)
Definition CpufreqSysfsDriver.cpp:264
std::string attribute_path(const std::string &name, int domain_idx) override
Get the path to the sysfs entry for signal.
Definition CpufreqSysfsDriver.cpp:139
static std::string plugin_name(void)
Definition CpufreqSysfsDriver.cpp:259
Definition PlatformTopo.hpp:28
Class used to implement the SysfsIOGroup base class.
Definition SysfsDriver.hpp:23
geopm_domain_e
Definition geopm_topo.h:17
Definition Agg.cpp:20