From a6267d24d86e0e777eb6b25a55b1195379d0f48f Mon Sep 17 00:00:00 2001 From: Ben Date: Thu, 6 Dec 2018 22:23:37 +0000 Subject: [PATCH] Not compiling but lots of progress --- CMakeLists.txt | 10 +++-- Makefile | 60 ++++++++++++++++++++++++++++++ bin/resource-monitor | Bin 16456 -> 30232 bytes include/cpu.h | 38 +++++++++++++++++++ platform/linux/monitoring/cpu.cpp | 51 +++++++++++++++++++++++++ src/main.cpp | 10 ++++- 6 files changed, 165 insertions(+), 4 deletions(-) create mode 100644 platform/linux/monitoring/cpu.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 5cdab63..da01074 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,13 +8,15 @@ set(BuildDir ./bin) set(BuildExecutable resource-monitor) set(Build ${BuildDir}/${BuildExecutable}) -set(Platform ./platform) -set(LinuxDep ${Platform}/linux) -set(WinDep ${Platform}/win32) set(SourceDir ./src) +set(Platform ./platform) +set(WinDep ${Platform}/win32) +set(LinuxDep ${Platform}/linux) set(Include ./include) +find_package(Threads REQUIRED) + include_directories(${Build}/ ${Include}) if (WIN32) @@ -39,3 +41,5 @@ add_executable(${Build} ${SourceFiles} ${PlatformDepSource} ) + +target_link_libraries(${Build} Threads::Threads) diff --git a/Makefile b/Makefile index ecb266b..8d54ed0 100644 --- a/Makefile +++ b/Makefile @@ -123,6 +123,60 @@ depend: $(MAKE) -f CMakeFiles/./bin/resource-monitor.dir/build.make CMakeFiles/./bin/resource-monitor.dir/build .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: @echo "The following are some of the valid targets for this Makefile:" @@ -132,6 +186,12 @@ help: @echo "... rebuild_cache" @echo "... ./bin/resource-monitor" @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 diff --git a/bin/resource-monitor b/bin/resource-monitor index 0989ba471b5c170b594a611ba8e4d7ab652d073d..3c3b10e16718b14eb0ce2d8520d32be428b24b14 100755 GIT binary patch literal 30232 zcmeHweRN#KmFLqJ7QvPT*b`wxXgh`&h=p2~WjPp-EVbP2$hJ_+Mgy4VR(IR#pf6h8 zvP=T2MTXEQ0w+UeybdHLc-y?*LeY?w1=|4^ONy07lNb?erxTes?cRO!F?nw#?T@(f7@#x(}z%Ffl8Iwq9& z@C87fQEQxozaHaa<1FM06;9LZGyqkn&iqVR%=iL8D)$YhyWxe*Cr~sbNab>+V+%Az zpi!ptRIZ3FIq!y}rJ7Hm(5?DBnr^t@7OqdAvmDuGVx2BG(VPh%Cj%f&Nn=lf=;PDAV1rQHwDI5-+8ee@R5>ddNe$nJ~ff1WLK

%FG-6Upj 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 YZ)iv~9+BqS_5B~|&<^*-58(Cx4-lsNod5s; diff --git a/include/cpu.h b/include/cpu.h index e69de29..e00d781 100644 --- a/include/cpu.h +++ b/include/cpu.h @@ -0,0 +1,38 @@ +#pragma once + +#include +#include + +class CPU { +public: + CPU(); + + std::atomic CPU_PREVIOUS_IDLE; + std::atomic CPU_PREVIOUS_TOTAL; + std::atomic CPU_IDLE; + std::atomic CPU_TOTAL; + + std::atomic 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 m_isPolling; +}; + +static CPU* instance; +static CPU* GetCPUInstance() { + if (instance == (void*)0) { + CPU cpu; + instance = &cpu; + return instance; + } + return instance; +} + diff --git a/platform/linux/monitoring/cpu.cpp b/platform/linux/monitoring/cpu.cpp new file mode 100644 index 0000000..3aec16b --- /dev/null +++ b/platform/linux/monitoring/cpu.cpp @@ -0,0 +1,51 @@ +#include + +#include +#include +#include +#include +#include + +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(); +} diff --git a/src/main.cpp b/src/main.cpp index c807aba..ac6fd0d 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,4 +1,12 @@ +#include +#include int main(int argc, char** argv) { - + CPU* cpu = GetCPUInstance(); + + cpu->START_CPU_POLLING(); + + while(1) { + std::cout << cpu->CPU_PERCENT() << std::endl; + } }