14 #include <sys/sysinfo.h>
26 cpuCount = get_nprocs();
31 return cpu_data[0] + cpu_data[1] + cpu_data[2];
34 return cpu_data[0] + cpu_data[1] + cpu_data[2] + cpu_data[3];
54 for (U32 i = 0; i < cpu_index + 1; i++) {
71 if (sscanf(
proc_stat_line,
"%*s %u %u %u %u", &cpu_data[0], &cpu_data[1], &cpu_data[2], &cpu_data[3]) !=
96 U32 cpu_data[4] = {0};
102 if (cpu_index >= cpuCount) {
117 return static_cast<U64>(total_ram)*
static_cast<U64>(memory_unit);
120 return static_cast<U64>((total_ram - free_ram)) *
static_cast<U64>(memory_unit);
126 const struct sysinfo& memory_info) {
127 return ((total_ram <= 0) || (memory_unit <= 0) ||
128 (
static_cast<unsigned long>(total_ram) != memory_info.totalram) ||
129 (
static_cast<unsigned long>(free_ram) != memory_info.freeram) ||
130 (
static_cast<unsigned int>(memory_unit) != memory_info.mem_unit));
134 return (total_ram < free_ram);
138 return (total_ram > (std::numeric_limits<FwSizeType>::max() / memory_unit));
142 struct sysinfo memory_info;
144 if (sysinfo(&memory_info) != 0) {
164 memory_util.used =
getMemoryUsed(total_ram, free_ram, memory_unit);
PlatformSizeType FwSizeType
constexpr char PROC_STAT_PATH[]
constexpr char READ_ONLY[]
char proc_stat_line[LINE_SIZE]
SystemResourcesStatus getCpuTicks(CpuTicks &ticks, U32 cpu_index=0)
Get the CPU tick information for a given CPU.
SystemResourcesStatus getMemUtil(MemUtil &memory_util)
Get system memory usage.
SystemResourcesStatus getCpuCount(U32 &cpu_count)
Request the count of the CPUs detected by the system.
@ SYSTEM_RESOURCES_OK
Call was successful.
@ SYSTEM_RESOURCES_ERROR
Call failed.
SystemResources::SystemResourcesStatus readProcStatLine(FILE *fp, char proc_stat_line[LINE_SIZE])
bool checkInvalidMemoryCalculation(FwSizeType total_ram, FwSizeType free_ram)
SystemResources::SystemResourcesStatus getCpuData(U32 cpu_index, U32 cpu_data[4])
SystemResources::SystemResourcesStatus openProcStatFile(FILE *&fp)
U64 getCpuTotal(U32 cpu_data[4])
U64 getCpuUsed(U32 cpu_data[4])
bool checkCastingAndTypeErrors(FwSizeType total_ram, FwSizeType free_ram, FwSizeType memory_unit, const struct sysinfo &memory_info)
SystemResources::SystemResourcesStatus parseCpuData(char proc_stat_line[LINE_SIZE], U32 cpu_data[4])
SystemResources::SystemResourcesStatus getCpuDataLine(FILE *fp, U32 cpu_index, char proc_stat_line[LINE_SIZE])
U64 getMemoryUsed(FwSizeType total_ram, FwSizeType free_ram, FwSizeType memory_unit)
U64 getMemoryTotal(FwSizeType total_ram, FwSizeType memory_unit)
bool checkMultiplicationOverflow(FwSizeType total_ram, FwSizeType memory_unit)