/* PIP - Platform Independent Primitives Process resource monitor Copyright (C) 2014 Ivan Pelipenko peri4ko@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #ifndef PISYSTEMMONITOR_H #define PISYSTEMMONITOR_H #include "pithread.h" #include "piprocess.h" class PIP_EXPORT PISystemMonitor: public PIThread { public: PISystemMonitor(); struct ProcessStats { PIString exec_name; PIString state; int ID; int parent_ID; int group_ID; int session_ID; int priority; int threads; ulong physical_memsize; ulong resident_memsize; ulong share_memsize; ulong virtual_memsize; ulong data_memsize; PIString physical_memsize_readable; PIString resident_memsize_readable; PIString share_memsize_readable; PIString virtual_memsize_readable; PIString data_memsize_readable; float cpu_load_system; float cpu_load_user; }; bool startOnProcess(int pID); bool startOnSelf() {return startOnProcess(PIProcess::currentPID());} const ProcessStats & statistic() const {return stat;} private: void run(); PIFile file, filem; ProcessStats stat; int pID_, page_size, cpu_count, cycle; #ifndef WINDOWS llong cpu_u_cur, cpu_u_prev, cpu_s_cur, cpu_s_prev; #endif }; #endif // PISYSTEMMONITOR_H