16#ifndef SIMICS_SYSTEMC_IFACE_CONCURRENCY_GROUP_SIMICS_ADAPTER_H
17#define SIMICS_SYSTEMC_IFACE_CONCURRENCY_GROUP_SIMICS_ADAPTER_H
19#include <simics/model-iface/concurrency.h>
31template<
typename TBase,
typename TInterface = ConcurrencyGroupInterface>
37 CONCURRENCY_GROUP_INTERFACE, init_iface()) {}
41 unsigned group_index) {
42 std::vector<conf_object_t *> v = adapter<TBase, TInterface>(
43 obj)->serialized_memory_group(group_index);
44 return vectorToList(v);
47 unsigned group_index) {
48 std::vector<conf_object_t *> v = adapter<TBase, TInterface>(
49 obj)->execution_group(group_index);
50 return vectorToList(v);
54 static attr_value_t vectorToList(
const std::vector<conf_object_t *> &v) {
56 return SIM_make_attr_nil();
58 attr_value_t list = SIM_alloc_attr_list(v.size());
59 for (
unsigned i = 0; i < v.size(); ++i)
60 SIM_attr_list_set_item(&list, i, SIM_make_attr_object(v[i]));
64 std::vector<std::string> description(conf_object_t *obj,
66 return descriptionBase<TBase, TInterface>(obj, type);
68 concurrency_group_interface_t init_iface() {
69 concurrency_group_interface_t iface = {};
Adapter for concurrency mode interface.
Definition: concurrency_group_simics_adapter.h:33
static attr_value_t execution_group(conf_object_t *NOTNULL obj, unsigned group_index)
Definition: concurrency_group_simics_adapter.h:46
ConcurrencyGroupSimicsAdapter()
Definition: concurrency_group_simics_adapter.h:35
static attr_value_t serialized_memory_group(conf_object_t *NOTNULL obj, unsigned group_index)
Definition: concurrency_group_simics_adapter.h:40
Base class for mapping Simics interface to a C++ interface.
Definition: simics_adapter.h:47
DescriptionType
Definition: description_interface.h:25
Definition: pci_bus_interface.h:24