Not compiling but lots of progress
This commit is contained in:
@@ -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)
|
||||
|
||||
60
Makefile
60
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
|
||||
|
||||
|
||||
|
||||
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();
|
||||
}
|
||||
@@ -1,4 +1,12 @@
|
||||
#include <iostream>
|
||||
#include <cpu.h>
|
||||
|
||||
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