// SPDX-FileCopyrightText: 2023 Tobias Schmidl // // SPDX-License-Identifier: AGPL-3.0-or-later #include #include #include #include using namespace glimpses; Glimpses::Glimpses() { } Glimpses::CPUSet Glimpses::getCPUCount() const { cpu_set_t cpuset; auto minmax = [](int64_t min, int64_t value, int64_t max) -> CPUCount { return std::min(std::max(value, min), max); }; sched_getaffinity(0, sizeof(cpuset), &cpuset); return CPUSet{{"configured", minmax(0, sysconf(_SC_NPROCESSORS_CONF), MAX_CPU_COUNT)}, {"logical", minmax(0, std::thread::hardware_concurrency(), MAX_CPU_COUNT)}, {"online", minmax(0, sysconf(_SC_NPROCESSORS_ONLN), MAX_CPU_COUNT)}, {"allowed", minmax(0, CPU_COUNT(&cpuset), MAX_CPU_COUNT)}}; }