geopm 3.1.1.dev456+g3ba31824
GEOPM - Global Extensible Open Power Manager
Loading...
Searching...
No Matches
SSTIoctl.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#ifndef SSTIOCTL_HPP_INCLUDE
6#define SSTIOCTL_HPP_INCLUDE
7
8#include <cstdint>
9
10#include <memory>
11#include <vector>
12
13namespace geopm
14{
23
26 uint32_t cpu_index;
27 uint32_t punit_cpu;
28 };
29
37
40 uint32_t is_write;
41 uint32_t cpu_index;
43 uint32_t value;
44 };
45
53
56 uint32_t cpu_index;
57 uint32_t mbox_interface_param; // Parameter to the mbox interface
58 // itself
59 uint32_t write_value; // Mailbox data, or input parameter for a read
60 uint32_t read_value; // Mailbox data (read-only)
61 uint16_t command;
62 uint16_t subcommand;
63 uint32_t reserved;
64 };
65
73
76 {
77 public:
78 virtual ~SSTIoctl() = default;
79
82 virtual int version(sst_version_s *version) = 0;
83
88 virtual int get_cpu_id(sst_cpu_map_interface_batch_s *cpu_batch) = 0;
89
95 virtual int mbox(sst_mbox_interface_batch_s *mbox_batch) = 0;
96
102 virtual int mmio(sst_mmio_interface_batch_s *mmio_batch) = 0;
103
106 static std::shared_ptr<SSTIoctl> make_shared(const std::string &path);
107 };
108}
109#endif
Defines functions that interact directly with SST ioctls.
Definition SSTIoctl.hpp:76
virtual int mbox(sst_mbox_interface_batch_s *mbox_batch)=0
Interact with the SST mailbox. This may be for send or receive operations.
virtual ~SSTIoctl()=default
virtual int mmio(sst_mmio_interface_batch_s *mmio_batch)=0
Interact with the SST MMIO interface. This may be for read or write operations.
static std::shared_ptr< SSTIoctl > make_shared(const std::string &path)
create an object to interact with this interface.
Definition SSTIoctl.cpp:27
virtual int get_cpu_id(sst_cpu_map_interface_batch_s *cpu_batch)=0
Get mappings of logical CPUs to punit CPUs.
virtual int version(sst_version_s *version)=0
Send an ioctl to the SST version interface.
Definition Agg.cpp:20
std::string version(void)
Definition geopm_version.cpp:22
Definition SSTIoctl.hpp:33
sst_cpu_map_interface_s interfaces[1]
Definition SSTIoctl.hpp:35
uint32_t num_entries
Definition SSTIoctl.hpp:34
A single mapping of logical CPU index to punit CPU.
Definition SSTIoctl.hpp:25
uint32_t punit_cpu
Definition SSTIoctl.hpp:27
uint32_t cpu_index
Definition SSTIoctl.hpp:26
Definition SSTIoctl.hpp:69
uint32_t num_entries
Definition SSTIoctl.hpp:70
sst_mbox_interface_s interfaces[1]
Definition SSTIoctl.hpp:71
A single mailbox operation.
Definition SSTIoctl.hpp:55
uint32_t mbox_interface_param
Definition SSTIoctl.hpp:57
uint32_t write_value
Definition SSTIoctl.hpp:59
uint16_t subcommand
Definition SSTIoctl.hpp:62
uint32_t reserved
Definition SSTIoctl.hpp:63
uint32_t read_value
Definition SSTIoctl.hpp:60
uint16_t command
Definition SSTIoctl.hpp:61
uint32_t cpu_index
Definition SSTIoctl.hpp:56
Definition SSTIoctl.hpp:49
sst_mmio_interface_s interfaces[1]
Definition SSTIoctl.hpp:51
uint32_t num_entries
Definition SSTIoctl.hpp:50
A single MMIO operation.
Definition SSTIoctl.hpp:39
uint32_t value
Definition SSTIoctl.hpp:43
uint32_t is_write
Definition SSTIoctl.hpp:40
uint32_t cpu_index
Definition SSTIoctl.hpp:41
uint32_t register_offset
Definition SSTIoctl.hpp:42
SST Version information.
Definition SSTIoctl.hpp:16
uint8_t is_mmio_supported
Definition SSTIoctl.hpp:21
uint16_t interface_version
Definition SSTIoctl.hpp:17
uint16_t batch_command_limit
Definition SSTIoctl.hpp:19
uint16_t driver_version
Definition SSTIoctl.hpp:18
uint8_t is_mbox_supported
Definition SSTIoctl.hpp:20