summaryrefslogtreecommitdiffstats
path: root/src/detection/cpuusage/cpuusage_haiku.c
blob: f4d3c632d05aa0c4bac622c1604c1ec7e76ec203 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include "fastfetch.h"
#include "detection/cpuusage/cpuusage.h"
#include "common/mallocHelper.h"

#include <OS.h>

const char* ffGetCpuUsageInfo(FFlist* cpuTimes) {
    system_info sysInfo;
    if (get_system_info(&sysInfo) != B_OK) {
        return "get_system_info() failed";
    }

    FF_AUTO_FREE cpu_info* cpuInfo = malloc(sizeof(*cpuInfo) * sysInfo.cpu_count);
    if (get_cpu_info(0, sysInfo.cpu_count, cpuInfo) != B_OK) {
        return "get_cpu_info() failed";
    }

    uint64_t uptime = (uint64_t) system_time();

    for (uint32_t i = 0; i < sysInfo.cpu_count; ++i) {
        FFCpuUsageInfo* info = FF_LIST_ADD(FFCpuUsageInfo, *cpuTimes);
        info->inUseAll = (uint64_t) cpuInfo[i].active_time;
        info->totalAll = uptime;
    }

    return NULL;
}