File indexing completed on 2024-05-12 17:00:14

0001 /*
0002     SPDX-FileCopyrightText: 2020 David Redondo <kde@david-redondo.de>
0003 
0004     SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0005 */
0006 
0007 #ifndef FREEBSDCPU_H
0008 #define FREEBSDCPU_H
0009 
0010 #include "cpu.h"
0011 #include "cpuplugin_p.h"
0012 #include "usagecomputer.h"
0013 
0014 namespace KSysGuard {
0015 template <typename T>
0016 class SysctlSensor;
0017 }
0018 class LoadAverages;
0019 
0020 class FreeBsdCpuObject : public CpuObject {
0021 public:
0022     FreeBsdCpuObject(int cpuNumber, const QString &name, KSysGuard::SensorContainer *parent);
0023     void update(long system, long user, long idle);
0024     void initialize() override;
0025 private:
0026     void makeSensors() override;
0027 
0028     UsageComputer m_usageComputer;
0029     const QByteArray m_sysctlPrefix;  // "dev.cpu.<n>"
0030 };
0031 
0032 class FreeBsdAllCpusObject : public AllCpusObject {
0033 public:
0034     using AllCpusObject::AllCpusObject;
0035     void update(long system, long user, long idle);
0036 private:
0037     UsageComputer m_usageComputer;
0038 };
0039 
0040 class FreeBsdCpuPluginPrivate : public CpuPluginPrivate {
0041 public:
0042     FreeBsdCpuPluginPrivate(CpuPlugin *q);
0043     void update() override;
0044 private:
0045     FreeBsdAllCpusObject *m_allCpus;
0046     QVector<FreeBsdCpuObject*> m_cpus;
0047     LoadAverages *m_loadAverages;
0048 };
0049 
0050 #endif