2 * Copyright (C) 2005-2018 Team Kodi
3 * This file is part of Kodi - https://kodi.tv
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
9 #include "PosixResourceCounter.h"
11 #include "utils/log.h"
15 #include "PlatformDefs.h"
17 CPosixResourceCounter::CPosixResourceCounter()
22 CPosixResourceCounter::~CPosixResourceCounter() = default;
24 double CPosixResourceCounter::GetCPUUsage()
27 if (gettimeofday(&tmNow
, NULL
) == -1)
28 CLog::Log(LOGERROR
, "error {} in gettimeofday", errno
);
31 double dElapsed
= ( ((double)tmNow
.tv_sec
+ (double)tmNow
.tv_usec
/ 1000000.0) -
32 ((double)m_tmLastCheck
.tv_sec
+ (double)m_tmLastCheck
.tv_usec
/ 1000000.0) );
37 if (getrusage(RUSAGE_SELF
, &usage
) == -1)
38 CLog::Log(LOGERROR
, "error {} in getrusage", errno
);
41 double dUser
= ( ((double)usage
.ru_utime
.tv_sec
+ (double)usage
.ru_utime
.tv_usec
/ 1000000.0) -
42 ((double)m_usage
.ru_utime
.tv_sec
+ (double)m_usage
.ru_utime
.tv_usec
/ 1000000.0) );
43 double dSys
= ( ((double)usage
.ru_stime
.tv_sec
+ (double)usage
.ru_stime
.tv_usec
/ 1000000.0) -
44 ((double)m_usage
.ru_stime
.tv_sec
+ (double)m_usage
.ru_stime
.tv_usec
/ 1000000.0) );
46 m_tmLastCheck
= tmNow
;
48 m_dLastUsage
= ((dUser
+dSys
) / dElapsed
) * 100.0;
57 void CPosixResourceCounter::Reset()
59 if (gettimeofday(&m_tmLastCheck
, NULL
) == -1)
60 CLog::Log(LOGERROR
, "error {} in gettimeofday", errno
);
62 if (getrusage(RUSAGE_SELF
, &m_usage
) == -1)
63 CLog::Log(LOGERROR
, "error {} in getrusage", errno
);