From 78a52df596386f5100995202b35db7a700afff37 Mon Sep 17 00:00:00 2001 From: souldbminersmwc Date: Wed, 1 Apr 2026 20:11:06 -0400 Subject: [PATCH] hocclk: fix gpu load --- .../sysmodule/src/board/board_load.cpp | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/Source/hoc-clk/sysmodule/src/board/board_load.cpp b/Source/hoc-clk/sysmodule/src/board/board_load.cpp index 6fbc559e..50747683 100644 --- a/Source/hoc-clk/sysmodule/src/board/board_load.cpp +++ b/Source/hoc-clk/sysmodule/src/board/board_load.cpp @@ -45,8 +45,8 @@ namespace board { u32 gpuLoad; u32 _fd, _fd2; - Result nvCheckSched; - + Result nvCheckSched = 0; + Result nvCheck_load = 0; u64 idletick0 = 0; u64 idletick1 = 0; u64 idletick2 = 0; @@ -54,18 +54,16 @@ namespace board { constexpr u64 CpuTimeOutNs = 500'000'000; constexpr double Systemtickfrequency = 19200000.0 * (static_cast(CpuTimeOutNs) / 1'000'000'000.0); - void GpuLoadThread(void *nvCheckPtr) { - Result nvCheck = *static_cast(nvCheckPtr); - constexpr u32 GpuSamples = 8; - u32 gpu_load_array[GpuSamples] = {}; + void GpuLoadThread(void *ptr) { + #define gpu_samples_average 8 + #define NVGPU_GPU_IOCTL_PMU_GET_GPU_LOAD 0x80044715 + uint32_t gpu_load_array[gpu_samples_average] = {0}; size_t i = 0; - constexpr u32 NVGPU_GPU_IOCTL_PMU_GET_GPU_LOAD = 0x80044715; - - if (R_SUCCEEDED(nvCheck)) do { + if (R_SUCCEEDED(nvCheck_load)) do { u32 temp; if (R_SUCCEEDED(nvIoctl(_fd, NVGPU_GPU_IOCTL_PMU_GET_GPU_LOAD, &temp))) { - gpu_load_array[i++ % GpuSamples] = temp; - gpuLoad = std::accumulate(&gpu_load_array[0], &gpu_load_array[GpuSamples], 0) / GpuSamples; + gpu_load_array[i++ % gpu_samples_average] = temp; + gpuLoad = std::accumulate(&gpu_load_array[0], &gpu_load_array[gpu_samples_average], 0) / gpu_samples_average; } svcSleepThread(16'666'000); // wait a bit (this is the perfect amount of time to keep the reading accurate) } while(true); @@ -85,6 +83,7 @@ namespace board { void StartLoad(Result nvCheck, u32 fd) { _fd = fd; + nvCheck_load = nvCheck; threadCreate(&gpuThread, GpuLoadThread, &nvCheck, NULL, 0x1000, 0x3F, -2); threadStart(&gpuThread);