14#ifndef SIMICS_SYSTEMC_CCI_GLOBAL_H
15#define SIMICS_SYSTEMC_CCI_GLOBAL_H
17#include <simics/cc-api.h>
18#include <simics/simulator/sim-get-class.h>
35 explicit CciGlobal(ConfObjectRef o) : ConfObject(o), attributes_(NULL) {
38 attributes_ = attributes;
41 static attr_value_t
getAttribute(lang_void *ptr, conf_object_t *obj,
43 uintptr_t key =
reinterpret_cast<intptr_t
>(ptr);
44 CciGlobal *o = simics::from_obj<CciGlobal>(obj);
45 attr_value_t result = o->attributes_->
attribute<
50 static set_error_t
setAttribute(lang_void *ptr, conf_object_t *obj,
51 attr_value_t *val, attr_value_t *idx) {
52 uintptr_t key =
reinterpret_cast<intptr_t
>(ptr);
53 CciGlobal *o = simics::from_obj<CciGlobal>(obj);
54 set_error_t result = o->attributes_->
attribute<
59 static conf_class_t *
initClass(
const char *module_name,
61 assert(module_name != NULL);
62 std::string cls_name(module_name);
63 cls_name +=
"_cci_global";
64 std::replace(cls_name.begin(), cls_name.end(),
'-',
'_');
66 if (SIM_clear_exception() == SimExc_No_Exception) {
70 auto new_cls = make_class<CciGlobal>(
72 "Global CCI parameters.",
73 "All CCI parameters on a global level.",
74 Sim_Class_Kind_Pseudo);
75#if INTC_EXT && USE_SIMICS_CCI
77 for (
const auto ¶meter : cfg.getParameters(NULL)) {
78 const char *type = cfg.simicsType(parameter);
84 cfg.simicsName(parameter));
87 "CCI Attribute %s is now %s.",
89 attribute_name.c_str());
98 SIM_register_typed_attribute(
99 *new_cls.get(), attribute_name.c_str(),
102 Sim_Attr_Pseudo, cfg.simicsType(parameter), 0,
103 parameter.get_description().c_str());
104 if (SIM_clear_exception() != SimExc_No_Exception) {
106 "Failed to register CCI attribute: '%s'",
107 attribute_name.c_str());
Definition: cci_configuration.h:35
Definition: cci_global.h:33
static attr_value_t getAttribute(lang_void *ptr, conf_object_t *obj, attr_value_t *idx)
Definition: cci_global.h:41
CciGlobal(ConfObjectRef o)
Definition: cci_global.h:35
static conf_class_t * initClass(const char *module_name, ConfObjectRef obj)
Definition: cci_global.h:59
static set_error_t setAttribute(lang_void *ptr, conf_object_t *obj, attr_value_t *val, attr_value_t *idx)
Definition: cci_global.h:50
void init(awareness::Attributes *attributes)
Definition: cci_global.h:37
Definition: attributes.h:26
T * attribute(int key)
Definition: attributes.h:37
Definition: cci_attribute.h:32
static int define(std::string parameter_name)
Definition: proxy_attribute_name.h:30
conf_class_t * SIM_get_class(const char *NOTNULL name)
@ Log_Awareness
Definition: adapter_log_groups.h:24