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