108 lines
3.0 KiB
C++
108 lines
3.0 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_ */
|