From 658eb675df47e041d5714fe52bc3bdb2e1d30302 Mon Sep 17 00:00:00 2001 From: Steffen Winter Date: Fri, 1 Mar 2024 18:52:58 +0100 Subject: [PATCH] Drop support for GCC 10 --- Makefile | 2 +- README.md | 8 ++++---- src/btop.cpp | 26 +++++--------------------- 3 files changed, 10 insertions(+), 26 deletions(-) diff --git a/Makefile b/Makefile index 03aea89..a30df07 100644 --- a/Makefile +++ b/Makefile @@ -79,7 +79,7 @@ ifeq ($(CXX_IS_CLANG),true) CLANG_WORKS := true endif else - ifneq ($(shell test $(CXX_VERSION_MAJOR) -lt 10; echo $$?),0) + ifneq ($(shell test $(CXX_VERSION_MAJOR) -lt 11; echo $$?),0) GCC_WORKS := true endif endif diff --git a/README.md b/README.md index 5e01373..a70badd 100644 --- a/README.md +++ b/README.md @@ -354,7 +354,7 @@ If you have an AMD GPU `rocm_smi_lib` is required, which may or may not be packa ## Compilation Linux - Requires at least GCC 10 or Clang 16. + Requires at least GCC 11 or Clang 16. The makefile also needs GNU coreutils and `sed` (should already be installed on any modern distribution). @@ -552,7 +552,7 @@ If you have an AMD GPU `rocm_smi_lib` is required, which may or may not be packa ## Compilation macOS OSX - Requires at least GCC 10 or Clang 16. + Requires at least GCC 11 or Clang 16. With GCC, version 12 (or better) is needed for macOS Ventura. If you get linker errors on Ventura you'll need to upgrade your command line tools (Version 14.0) is bugged. @@ -723,7 +723,7 @@ If you have an AMD GPU `rocm_smi_lib` is required, which may or may not be packa ## Compilation FreeBSD - Requires at least GCC 10 or Clang 16. + Requires at least GCC 11 or Clang 16. Note that GNU make (`gmake`) is required to compile on FreeBSD. @@ -904,7 +904,7 @@ If you have an AMD GPU `rocm_smi_lib` is required, which may or may not be packa ## Compilation OpenBSD - Requires at least GCC 10. + Requires at least GCC 11. Note that GNU make (`gmake`) is required to compile on OpenBSD. diff --git a/src/btop.cpp b/src/btop.cpp index 8eae107..72bade5 100644 --- a/src/btop.cpp +++ b/src/btop.cpp @@ -33,17 +33,13 @@ tab-size = 4 #include #include #include +#include #include #ifdef __APPLE__ #include #include #include #endif -#if !defined(__clang__) && __GNUC__ < 11 - #include -#else - #include -#endif #include "btop_shared.hpp" #include "btop_tools.hpp" @@ -424,18 +420,7 @@ namespace Runner { atomic redraw (false); atomic coreNum_reset (false); - //* Setup semaphore for triggering thread to do work -#if !defined(__clang__) && __GNUC__ < 11 - sem_t do_work; - inline void thread_sem_init() { sem_init(&do_work, 0, 0); } - inline void thread_wait() { sem_wait(&do_work); } - inline void thread_trigger() { sem_post(&do_work); } -#else - std::binary_semaphore do_work(0); - inline void thread_sem_init() { ; } - inline void thread_wait() { do_work.acquire(); } - inline void thread_trigger() { do_work.release(); } -#endif + std::binary_semaphore sem { 0 }; //* RAII wrapper for pthread_mutex locking class thread_lock { @@ -553,7 +538,7 @@ namespace Runner { //* ----------------------------------------------- THREAD LOOP ----------------------------------------------- while (not Global::quitting) { - thread_wait(); + sem.acquire(); atomic_wait_for(active, true, 5000); if (active) { Global::exit_error_msg = "Runner thread failed to get active lock!"; @@ -840,7 +825,7 @@ namespace Runner { if (Menu::active and not current_conf.background_update) Global::overlay.clear(); - thread_trigger(); + sem.release(); atomic_wait_for(active, false, 10); } @@ -868,7 +853,7 @@ namespace Runner { clean_quit(1); } } - thread_trigger(); + sem.release(); atomic_wait_for(active, false, 100); atomic_wait_for(active, true, 100); } @@ -1077,7 +1062,6 @@ int main(int argc, char **argv) { pthread_sigmask(SIG_BLOCK, &mask, &Input::signal_mask); //? Start runner thread - Runner::thread_sem_init(); if (pthread_create(&Runner::runner_id, nullptr, &Runner::_runner, nullptr) != 0) { Global::exit_error_msg = "Failed to create _runner thread!"; clean_quit(1);