Not compiling but lots of progress

This commit is contained in:
Ben
2018-12-06 22:23:37 +00:00
parent 914f47f9ef
commit a6267d24d8
6 changed files with 165 additions and 4 deletions

View File

@@ -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)

View File

@@ -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.

View File

@@ -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;
}

View 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();
}

View File

@@ -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;
}
} }