File indexing completed on 2024-04-28 05:31:40

0001 /*
0002     SPDX-FileCopyrightText: 2020 Arjen Hiemstra <ahiemstra@heimr.nl>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "read_procsmaps_runnable.h"
0008 
0009 #include <QFile>
0010 
0011 using namespace KSysGuard;
0012 
0013 ReadProcSmapsRunnable::ReadProcSmapsRunnable(const QString &dir)
0014     : QObject()
0015     , m_dir(dir)
0016 {
0017     setAutoDelete(true);
0018 }
0019 
0020 void ReadProcSmapsRunnable::run()
0021 {
0022     QFile file{m_dir + QStringLiteral("smaps_rollup")};
0023     if (!file.open(QIODevice::ReadOnly)) {
0024         return;
0025     }
0026 
0027     qulonglong pss = 0LL;
0028     auto buffer = QByteArray{1024, '\0'};
0029     while (file.readLine(buffer.data(), buffer.size()) > 0) {
0030         if (buffer.startsWith("Pss:")) {
0031             pss += std::stoll(buffer.mid(sizeof("Pss:")).toStdString());
0032         }
0033     }
0034 
0035     file.close();
0036 
0037     Q_EMIT finished(pss);
0038 }