#ifdef __linux__ #include "SystemCalls.h" #include #include #include #include #include int System::getCountCPU() { int num_cores = sysconf(_SC_NPROCESSORS_ONLN); if(num_cores <= 0) throw std::runtime_error("Fail get number of cores"); return num_cores; } unsigned long long System::getMemorySize() { struct sysinfo info{}; if(sysinfo(&info) == -1) std::runtime_error("Fail get system info"); return info.totalram; } void* System::InitModule(const char* ModuleName, CoreInstance& core) { std::string fileName = "./lib"; fileName += ModuleName; fileName += ".so"; void* handler = dlopen(fileName.c_str(), RTLD_NOW); if(handler == nullptr) throw std::runtime_error("Module not found"); void(*init)(CoreInstance&) = reinterpret_cast(dlsym(handler, "InitModule")); if(init == nullptr) throw std::runtime_error("Module not contains InitModule"); init(core); return handler; } void System::StartModule(void* handler) { void(*start)() = reinterpret_cast(dlsym(handler, "StartModule")); if(start == nullptr) throw std::runtime_error("Module not contins StartModule"); start(); } void System::StopModule(void* handler) { void(*stop)() = reinterpret_cast(dlsym(handler, "StopModule")); if(stop == nullptr) std::runtime_error("Module mot contins StopModule"); stop(); dlclose(handler); } void System::QuitModule(void* handler) { void(*quit)() = reinterpret_cast(dlsym(handler, "QuitModule")); if(quit == nullptr) throw std::runtime_error("Module not contains QuitModule"); quit(); dlclose(handler); } #endif