geopm 3.2.1.dev516+g3137a7fce
GEOPM - Global Extensible Open Power Manager
Loading...
Searching...
No Matches
UncoreFreqSysfsDriver.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 UNCOREFREQSYSFSDRIVER_HPP_INCLUDE
7#define UNCOREFREQSYSFSDRIVER_HPP_INCLUDE
8
9#include "SysfsDriver.hpp"
10#include "geopm/IOGroup.hpp"
11
12namespace geopm
13{
30 {
31 public:
33 UncoreFreqSysfsDriver(const std::string &uncore_directory);
34 virtual ~UncoreFreqSysfsDriver() = default;
35 int domain_type(const std::string &name) const override;
36 std::string attribute_path(const std::string &name, int domain_idx) override;
37 std::function<double(const std::string &)> signal_parse(const std::string &signal_name) const override;
38 std::function<std::string(double)> control_gen(const std::string &control_name) const override;
39 std::string driver(void) const override;
40 std::map<std::string, properties_s> properties(void) const override;
41 static std::string plugin_name(void);
42 static std::unique_ptr<IOGroup> make_plugin(void);
43
44 private:
45 const std::map<std::string, properties_s> M_PROPERTIES;
46 const std::string M_UNCORE_DIRECTORY;
47 // Package index -> package_*_die_* directory path (fan-out
48 // control directory for max/min).
49 std::map<int, std::string> m_control_dir_by_package;
50 // Package index -> representative uncore* directory path
51 // (source for current_freq_khz status).
52 std::map<int, std::string> m_status_dir_by_package;
53 };
54}
55
56#endif
Class used to implement the SysfsIOGroup base class.
Definition SysfsDriver.hpp:23
SysfsDriver implementation for the Linux intel_uncore_frequency driver.
Definition UncoreFreqSysfsDriver.hpp:30
std::map< std::string, properties_s > properties(void) const override
Query the meta data about a signal or control.
Definition UncoreFreqSysfsDriver.cpp:184
static std::unique_ptr< IOGroup > make_plugin(void)
Definition UncoreFreqSysfsDriver.cpp:194
UncoreFreqSysfsDriver()
Definition UncoreFreqSysfsDriver.cpp:105
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 UncoreFreqSysfsDriver.cpp:147
std::string attribute_path(const std::string &name, int domain_idx) override
Get the path to the sysfs entry for signal.
Definition UncoreFreqSysfsDriver.cpp:127
virtual ~UncoreFreqSysfsDriver()=default
static std::string plugin_name(void)
Definition UncoreFreqSysfsDriver.cpp:189
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 UncoreFreqSysfsDriver.cpp:166
std::string driver(void) const override
Definition UncoreFreqSysfsDriver.cpp:179
int domain_type(const std::string &name) const override
Get the PlatformTopo domain type for an named attribute.
Definition UncoreFreqSysfsDriver.cpp:118
Definition Agg.cpp:20