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_ */
|