geopm 3.1.1.dev456+g3ba31824
GEOPM - Global Extensible Open Power Manager
Loading...
Searching...
No Matches
SSTControl.hpp
Go to the documentation of this file.
1/*
2 * Copyright (c) 2015 - 2024 Intel Corporation
3 * SPDX-License-Identifier: BSD-3-Clause
4 */
5
6#ifndef SSTCONTROL_HPP_INCLUDE
7#define SSTCONTROL_HPP_INCLUDE
8
9#include <memory>
10#include <cstdint>
11
12#include "Control.hpp"
13
14namespace geopm
15{
16 class SSTIO;
17
21 {
22 public:
24 {
25 M_MBOX, // SST Mailbox interface
26 M_MMIO // SST MMIO interface
27 };
28
51 SSTControl(std::shared_ptr<SSTIO> sstio, ControlType control_type,
52 int cpu_idx, uint32_t command, uint32_t subcommand,
53 uint32_t interface_parameter, uint32_t write_value, uint32_t begin_bit,
54 uint32_t end_bit, double scale, uint32_t rmw_subcommand,
55 uint32_t rmw_interface_parameter, uint32_t rmw_read_mask);
56 virtual ~SSTControl() = default;
57 void setup_batch(void) override;
58 void adjust(double value) override;
59 void write(double value) override;
60 void save(void) override;
61 void restore(void) override;
62 void set_write_dependency(uint64_t trigger_value, std::weak_ptr<geopm::Control> dependency, uint64_t dependency_write_value);
63
64 private:
65 std::shared_ptr<SSTIO> m_sstio;
66 const ControlType m_control_type;
67 const int m_cpu_idx;
68 const uint32_t m_command;
69 const uint32_t m_subcommand;
70 const uint32_t m_interface_parameter;
71 const uint32_t m_write_value;
72 int m_adjust_idx;
73 const int m_shift;
74 const int m_num_bit;
75 const uint64_t m_mask;
76 const uint32_t m_rmw_subcommand;
77 const uint32_t m_rmw_interface_parameter;
78 const uint32_t m_rmw_read_mask;
79 const double m_multiplier;
80 uint32_t m_saved_value;
81
82 uint64_t m_trigger_write_value;
83 std::weak_ptr<geopm::Control> m_dependency;
84 uint64_t m_dependency_write_value;
85 };
86}
87
88#endif
Definition Control.hpp:16
Definition SSTControl.hpp:21
void save(void) override
Store the current setting of the control for use by a future call to restore().
Definition SSTControl.cpp:80
virtual ~SSTControl()=default
void adjust(double value) override
Store values to be written by the owner's write_batch step.
Definition SSTControl.cpp:54
void write(double value) override
Write the value of the control without affecting any pushed batch controls.
Definition SSTControl.cpp:61
void restore(void) override
Restore the setting stored by save().
Definition SSTControl.cpp:98
void setup_batch(void) override
Prepare the control for being written through side effects by the owner's write_batch step....
Definition SSTControl.cpp:41
ControlType
Definition SSTControl.hpp:24
@ M_MBOX
Definition SSTControl.hpp:25
@ M_MMIO
Definition SSTControl.hpp:26
void set_write_dependency(uint64_t trigger_value, std::weak_ptr< geopm::Control > dependency, uint64_t dependency_write_value)
Definition SSTControl.cpp:117
Definition Agg.cpp:20