#ifndef _MODULES_CPU_HPP_ #define _MODULES_CPU_HPP_ #include <memory> #include <string> #include <vector> #include "modules/base.hpp" #include "drawtypes/icon.hpp" #include "drawtypes/label.hpp" #include "drawtypes/ramp.hpp" namespace modules { struct CpuTime { unsigned long long user; unsigned long long nice; unsigned long long system; unsigned long long idle; unsigned long long total; }; DefineModule(CpuModule, TimerModule) { const char *TAG_LABEL = "<label>"; const char *TAG_BAR_LOAD = "<bar:load>"; const char *TAG_RAMP_LOAD = "<ramp:load>"; const char *TAG_RAMP_LOAD_PER_CORE = "<ramp:load_per_core>"; std::vector<std::unique_ptr<CpuTime>> cpu_times; std::vector<std::unique_ptr<CpuTime>> prev_cpu_times; std::unique_ptr<drawtypes::Bar> bar_load; std::unique_ptr<drawtypes::Ramp> ramp_load; std::unique_ptr<drawtypes::Ramp> ramp_load_per_core; std::unique_ptr<drawtypes::Label> label; std::unique_ptr<drawtypes::Label> label_tokenized; float current_total_load; std::vector<float> current_load; bool read_values(); float get_load(int core); public: CpuModule(const std::string& name); bool update(); bool build(Builder *builder, const std::string& tag); }; } #endif