From 97fcafd030456bb120ce8857ce4359ad710f18c3 Mon Sep 17 00:00:00 2001 From: jackun Date: Wed, 5 Feb 2020 22:32:54 +0200 Subject: [PATCH] Check if amdgpu file handles are valid --- src/cpu_gpu.h | 60 ++++++++++++++++++++++++++++--------------------- src/overlay.cpp | 5 +++++ 2 files changed, 39 insertions(+), 26 deletions(-) diff --git a/src/cpu_gpu.h b/src/cpu_gpu.h index 14025f9a..c0139c27 100644 --- a/src/cpu_gpu.h +++ b/src/cpu_gpu.h @@ -83,32 +83,40 @@ void *getNvidiaGpuInfo(void *){ } void *getAmdGpuUsage(void *){ - rewind(amdGpuFile); - fflush(amdGpuFile); - if (fscanf(amdGpuFile, "%d", &amdgpu.load) != 1) - amdgpu.load = 0; - gpuLoad = amdgpu.load; - - rewind(amdTempFile); - fflush(amdTempFile); - if (fscanf(amdTempFile, "%d", &amdgpu.temp) != 1) - amdgpu.temp = 0; - amdgpu.temp /= 1000; - gpuTemp = amdgpu.temp; - - rewind(amdGpuVramTotalFile); - fflush(amdGpuVramTotalFile); - if (fscanf(amdGpuVramTotalFile, "%" PRId64, &amdgpu.memoryTotal) != 1) - amdgpu.memoryTotal = 0; - amdgpu.memoryTotal /= (1024 * 1024); - gpuMemTotal = amdgpu.memoryTotal; - - rewind(amdGpuVramUsedFile); - fflush(amdGpuVramUsedFile); - if (fscanf(amdGpuVramUsedFile, "%" PRId64, &amdgpu.memoryUsed) != 1) - amdgpu.memoryUsed = 0; - amdgpu.memoryUsed /= (1024 * 1024); - gpuMemUsed = amdgpu.memoryUsed; + if (amdGpuFile) { + rewind(amdGpuFile); + fflush(amdGpuFile); + if (fscanf(amdGpuFile, "%d", &amdgpu.load) != 1) + amdgpu.load = 0; + gpuLoad = amdgpu.load; + } + + if (amdTempFile) { + rewind(amdTempFile); + fflush(amdTempFile); + if (fscanf(amdTempFile, "%d", &amdgpu.temp) != 1) + amdgpu.temp = 0; + amdgpu.temp /= 1000; + gpuTemp = amdgpu.temp; + } + + if (amdGpuVramTotalFile) { + rewind(amdGpuVramTotalFile); + fflush(amdGpuVramTotalFile); + if (fscanf(amdGpuVramTotalFile, "%" PRId64, &amdgpu.memoryTotal) != 1) + amdgpu.memoryTotal = 0; + amdgpu.memoryTotal /= (1024 * 1024); + gpuMemTotal = amdgpu.memoryTotal; + } + + if (amdGpuVramUsedFile) { + rewind(amdGpuVramUsedFile); + fflush(amdGpuVramUsedFile); + if (fscanf(amdGpuVramUsedFile, "%" PRId64, &amdgpu.memoryUsed) != 1) + amdgpu.memoryUsed = 0; + amdgpu.memoryUsed /= (1024 * 1024); + gpuMemUsed = amdgpu.memoryUsed; + } pthread_detach(gpuThread); return NULL; diff --git a/src/overlay.cpp b/src/overlay.cpp index 8d47b26e..9dc59975 100644 --- a/src/overlay.cpp +++ b/src/overlay.cpp @@ -839,6 +839,11 @@ void init_gpu_stats(struct device_data *device_data) } } } + + // don't bother then + if (!amdGpuFile && !amdTempFile && !amdGpuVramTotalFile && !amdGpuVramUsedFile) { + device_data->gpu_stats = false; + } } }