Not compiling but lots of progress
This commit is contained in:
@@ -8,13 +8,15 @@ set(BuildDir ./bin)
|
|||||||
set(BuildExecutable resource-monitor)
|
set(BuildExecutable resource-monitor)
|
||||||
set(Build ${BuildDir}/${BuildExecutable})
|
set(Build ${BuildDir}/${BuildExecutable})
|
||||||
|
|
||||||
set(Platform ./platform)
|
|
||||||
set(LinuxDep ${Platform}/linux)
|
|
||||||
set(WinDep ${Platform}/win32)
|
|
||||||
set(SourceDir ./src)
|
set(SourceDir ./src)
|
||||||
|
set(Platform ./platform)
|
||||||
|
set(WinDep ${Platform}/win32)
|
||||||
|
set(LinuxDep ${Platform}/linux)
|
||||||
|
|
||||||
set(Include ./include)
|
set(Include ./include)
|
||||||
|
|
||||||
|
find_package(Threads REQUIRED)
|
||||||
|
|
||||||
include_directories(${Build}/ ${Include})
|
include_directories(${Build}/ ${Include})
|
||||||
|
|
||||||
if (WIN32)
|
if (WIN32)
|
||||||
@@ -39,3 +41,5 @@ add_executable(${Build}
|
|||||||
${SourceFiles}
|
${SourceFiles}
|
||||||
${PlatformDepSource}
|
${PlatformDepSource}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
target_link_libraries(${Build} Threads::Threads)
|
||||||
|
|||||||
60
Makefile
60
Makefile
@@ -123,6 +123,60 @@ depend:
|
|||||||
$(MAKE) -f CMakeFiles/./bin/resource-monitor.dir/build.make CMakeFiles/./bin/resource-monitor.dir/build
|
$(MAKE) -f CMakeFiles/./bin/resource-monitor.dir/build.make CMakeFiles/./bin/resource-monitor.dir/build
|
||||||
.PHONY : ./bin/resource-monitor/fast
|
.PHONY : ./bin/resource-monitor/fast
|
||||||
|
|
||||||
|
platform/linux/monitoring/cpu.o: platform/linux/monitoring/cpu.cpp.o
|
||||||
|
|
||||||
|
.PHONY : platform/linux/monitoring/cpu.o
|
||||||
|
|
||||||
|
# target to build an object file
|
||||||
|
platform/linux/monitoring/cpu.cpp.o:
|
||||||
|
$(MAKE) -f CMakeFiles/./bin/resource-monitor.dir/build.make CMakeFiles/./bin/resource-monitor.dir/platform/linux/monitoring/cpu.cpp.o
|
||||||
|
.PHONY : platform/linux/monitoring/cpu.cpp.o
|
||||||
|
|
||||||
|
platform/linux/monitoring/cpu.i: platform/linux/monitoring/cpu.cpp.i
|
||||||
|
|
||||||
|
.PHONY : platform/linux/monitoring/cpu.i
|
||||||
|
|
||||||
|
# target to preprocess a source file
|
||||||
|
platform/linux/monitoring/cpu.cpp.i:
|
||||||
|
$(MAKE) -f CMakeFiles/./bin/resource-monitor.dir/build.make CMakeFiles/./bin/resource-monitor.dir/platform/linux/monitoring/cpu.cpp.i
|
||||||
|
.PHONY : platform/linux/monitoring/cpu.cpp.i
|
||||||
|
|
||||||
|
platform/linux/monitoring/cpu.s: platform/linux/monitoring/cpu.cpp.s
|
||||||
|
|
||||||
|
.PHONY : platform/linux/monitoring/cpu.s
|
||||||
|
|
||||||
|
# target to generate assembly for a file
|
||||||
|
platform/linux/monitoring/cpu.cpp.s:
|
||||||
|
$(MAKE) -f CMakeFiles/./bin/resource-monitor.dir/build.make CMakeFiles/./bin/resource-monitor.dir/platform/linux/monitoring/cpu.cpp.s
|
||||||
|
.PHONY : platform/linux/monitoring/cpu.cpp.s
|
||||||
|
|
||||||
|
src/main.o: src/main.cpp.o
|
||||||
|
|
||||||
|
.PHONY : src/main.o
|
||||||
|
|
||||||
|
# target to build an object file
|
||||||
|
src/main.cpp.o:
|
||||||
|
$(MAKE) -f CMakeFiles/./bin/resource-monitor.dir/build.make CMakeFiles/./bin/resource-monitor.dir/src/main.cpp.o
|
||||||
|
.PHONY : src/main.cpp.o
|
||||||
|
|
||||||
|
src/main.i: src/main.cpp.i
|
||||||
|
|
||||||
|
.PHONY : src/main.i
|
||||||
|
|
||||||
|
# target to preprocess a source file
|
||||||
|
src/main.cpp.i:
|
||||||
|
$(MAKE) -f CMakeFiles/./bin/resource-monitor.dir/build.make CMakeFiles/./bin/resource-monitor.dir/src/main.cpp.i
|
||||||
|
.PHONY : src/main.cpp.i
|
||||||
|
|
||||||
|
src/main.s: src/main.cpp.s
|
||||||
|
|
||||||
|
.PHONY : src/main.s
|
||||||
|
|
||||||
|
# target to generate assembly for a file
|
||||||
|
src/main.cpp.s:
|
||||||
|
$(MAKE) -f CMakeFiles/./bin/resource-monitor.dir/build.make CMakeFiles/./bin/resource-monitor.dir/src/main.cpp.s
|
||||||
|
.PHONY : src/main.cpp.s
|
||||||
|
|
||||||
# Help Target
|
# Help Target
|
||||||
help:
|
help:
|
||||||
@echo "The following are some of the valid targets for this Makefile:"
|
@echo "The following are some of the valid targets for this Makefile:"
|
||||||
@@ -132,6 +186,12 @@ help:
|
|||||||
@echo "... rebuild_cache"
|
@echo "... rebuild_cache"
|
||||||
@echo "... ./bin/resource-monitor"
|
@echo "... ./bin/resource-monitor"
|
||||||
@echo "... edit_cache"
|
@echo "... edit_cache"
|
||||||
|
@echo "... platform/linux/monitoring/cpu.o"
|
||||||
|
@echo "... platform/linux/monitoring/cpu.i"
|
||||||
|
@echo "... platform/linux/monitoring/cpu.s"
|
||||||
|
@echo "... src/main.o"
|
||||||
|
@echo "... src/main.i"
|
||||||
|
@echo "... src/main.s"
|
||||||
.PHONY : help
|
.PHONY : help
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
@@ -0,0 +1,38 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <atomic>
|
||||||
|
#include <thread>
|
||||||
|
|
||||||
|
class CPU {
|
||||||
|
public:
|
||||||
|
CPU();
|
||||||
|
|
||||||
|
std::atomic<int> CPU_PREVIOUS_IDLE;
|
||||||
|
std::atomic<int> CPU_PREVIOUS_TOTAL;
|
||||||
|
std::atomic<int> CPU_IDLE;
|
||||||
|
std::atomic<int> CPU_TOTAL;
|
||||||
|
|
||||||
|
std::atomic<int> UPDATE_INTERVAL; // ms
|
||||||
|
|
||||||
|
void START_CPU_POLLING();
|
||||||
|
static void CPU_POLL();
|
||||||
|
void END_CPU_POLLING();
|
||||||
|
|
||||||
|
double CPU_PERCENT();
|
||||||
|
|
||||||
|
virtual ~CPU();
|
||||||
|
private:
|
||||||
|
std::thread* m_pollThread;
|
||||||
|
std::atomic<bool> m_isPolling;
|
||||||
|
};
|
||||||
|
|
||||||
|
static CPU* instance;
|
||||||
|
static CPU* GetCPUInstance() {
|
||||||
|
if (instance == (void*)0) {
|
||||||
|
CPU cpu;
|
||||||
|
instance = &cpu;
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
51
platform/linux/monitoring/cpu.cpp
Normal file
51
platform/linux/monitoring/cpu.cpp
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
#include <cpu.h>
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
CPU::CPU() {
|
||||||
|
this->UPDATE_INTERVAL = 1000;
|
||||||
|
this->m_isPolling = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CPU::START_CPU_POLLING() {
|
||||||
|
if (this->m_isPolling) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
std::thread t(&CPU::CPU_POLL);
|
||||||
|
this->m_pollThread = &t;
|
||||||
|
this->m_isPolling = true;
|
||||||
|
std::cout << "Worker CPU thread started" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CPU::CPU_POLL() {
|
||||||
|
CPU* cpu = GetCPUInstance();
|
||||||
|
while (cpu->m_isPolling) {
|
||||||
|
cpu->CPU_PREVIOUS_IDLE++;
|
||||||
|
cpu->CPU_PREVIOUS_TOTAL++;
|
||||||
|
cpu->CPU_IDLE++;
|
||||||
|
cpu->CPU_TOTAL++;
|
||||||
|
usleep(cpu->UPDATE_INTERVAL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CPU::END_CPU_POLLING() {
|
||||||
|
if (!this->m_isPolling) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this->m_isPolling = false;
|
||||||
|
usleep(this->UPDATE_INTERVAL + 5);
|
||||||
|
m_pollThread->join();
|
||||||
|
delete m_pollThread;
|
||||||
|
}
|
||||||
|
|
||||||
|
double CPU::CPU_PERCENT() {
|
||||||
|
return (double)this->CPU_TOTAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
CPU::~CPU() {
|
||||||
|
CPU::m_pollThread->~thread();
|
||||||
|
}
|
||||||
10
src/main.cpp
10
src/main.cpp
@@ -1,4 +1,12 @@
|
|||||||
|
#include <iostream>
|
||||||
|
#include <cpu.h>
|
||||||
|
|
||||||
int main(int argc, char** argv) {
|
int main(int argc, char** argv) {
|
||||||
|
CPU* cpu = GetCPUInstance();
|
||||||
|
|
||||||
|
cpu->START_CPU_POLLING();
|
||||||
|
|
||||||
|
while(1) {
|
||||||
|
std::cout << cpu->CPU_PERCENT() << std::endl;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user