108 lines
3.7 KiB
C++
108 lines
3.7 KiB
C++
/*
|
||
* Environment.h
|
||
*
|
||
* Created on: 26 нояб. 2018 г.
|
||
* Author: titov
|
||
*/
|
||
|
||
#ifndef SOURCE_SYSTEMIC_ENVIRONMENT_H_
|
||
|
||
#define SOURCE_SYSTEMIC_ENVIRONMENT_H_
|
||
|
||
#include "../systemic/SignalManager.hh"
|
||
#include "../systemic/StatusManager.hh"
|
||
#include "../systemic/CustomParameters.hpp"
|
||
#include "../systemic/ResourceHolder.hpp"
|
||
#include "../systemic/ProcScheduler.hh"
|
||
#include "../systemic/SystemException.hh"
|
||
|
||
#include "ProcessConfig.hh"
|
||
|
||
#include "../memories/memories.hh"
|
||
|
||
namespace configuration {
|
||
|
||
struct Environment {
|
||
|
||
typedef uint16_t Id;
|
||
|
||
typedef Id StatusId;
|
||
typedef Id SignalId;
|
||
typedef Id SettingId;
|
||
typedef Id TechFunctionId;
|
||
typedef Id GpioId;
|
||
|
||
systemic::SignalManager & signals;
|
||
systemic::StatusManager & statuses;
|
||
systemic::CustomParameters & cparams;
|
||
systemic::ResourceHolder & rholder;
|
||
systemic::ProcScheduler & scheduler;
|
||
|
||
systemic::ExceptionInfo & exception;
|
||
|
||
/**
|
||
* @brief Модель памяти системы
|
||
*
|
||
* Аллокатор (Allocator)
|
||
* Распредилитель памяти, используется для однократного выделения области памяти.
|
||
* В рамках выделенной области развёртывается платформо-независимое runtime окружение библиотеки
|
||
*
|
||
* Регион памяти (Memory Region)
|
||
* Память поделена на три региона:
|
||
* - Память объектов
|
||
* - Память данных
|
||
* - Память структур описания, используемых во время сборки приложения
|
||
*
|
||
* Регионы памяти могут располагаться в одной физической памяти.
|
||
*/
|
||
|
||
/**
|
||
* @brief Аллокатор статической памяти объектов
|
||
*
|
||
* Надёжная, быстрая память объектов находится ближе к процессору.
|
||
*/
|
||
std::pmr::memory_resource & static_object_ma;
|
||
|
||
/**
|
||
* @brief Аллокатор статической памяти данных.
|
||
*
|
||
* Медленная память данных большого объёма.
|
||
*/
|
||
std::pmr::memory_resource & static_data_ma;
|
||
|
||
/**
|
||
* @brief Аллокатор статической памяти структур описания.
|
||
*
|
||
* Память структур описания доступна на изменение только из методов шагов инициализации.
|
||
* Память можно использовать на запись только до завершения инициализации, читать можно всегда.
|
||
*/
|
||
std::pmr::memory_resource & static_setup_ma;
|
||
|
||
std::pair<const char *, std::size_t> (* platform_info)( std::size_t info_id );
|
||
|
||
Environment(
|
||
systemic::SignalManager & sgm,
|
||
systemic::StatusManager & stm,
|
||
systemic::CustomParameters & cps,
|
||
systemic::ResourceHolder & rch,
|
||
systemic::ProcScheduler & sch,
|
||
|
||
systemic::ExceptionInfo & exp,
|
||
|
||
std::pmr::memory_resource & object_mr,
|
||
std::pmr::memory_resource & data_mr,
|
||
std::pmr::memory_resource & setup_mr
|
||
)
|
||
: signals(sgm), statuses(stm), cparams(cps), rholder(rch), scheduler(sch),
|
||
static_object_ma(object_mr),
|
||
static_data_ma(data_mr),
|
||
static_setup_ma(setup_mr),
|
||
exception(exp),
|
||
platform_info(nullptr) { }
|
||
|
||
};
|
||
|
||
}
|
||
|
||
#endif /* SOURCE_SYSTEMIC_ENVIRONMENT_H_ */
|