Drop support for GCC 10

This commit is contained in:
Steffen Winter 2024-03-01 18:52:58 +01:00
parent c6fbfd1e27
commit 658eb675df
No known key found for this signature in database
GPG key ID: 4A8AA731814C8247
3 changed files with 10 additions and 26 deletions

View file

@ -79,7 +79,7 @@ ifeq ($(CXX_IS_CLANG),true)
CLANG_WORKS := true CLANG_WORKS := true
endif endif
else else
ifneq ($(shell test $(CXX_VERSION_MAJOR) -lt 10; echo $$?),0) ifneq ($(shell test $(CXX_VERSION_MAJOR) -lt 11; echo $$?),0)
GCC_WORKS := true GCC_WORKS := true
endif endif
endif endif

View file

@ -354,7 +354,7 @@ If you have an AMD GPU `rocm_smi_lib` is required, which may or may not be packa
## Compilation Linux ## 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). 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 ## 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. 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 ## 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. 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 ## Compilation OpenBSD
Requires at least GCC 10. Requires at least GCC 11.
Note that GNU make (`gmake`) is required to compile on OpenBSD. Note that GNU make (`gmake`) is required to compile on OpenBSD.

View file

@ -33,17 +33,13 @@ tab-size = 4
#include <tuple> #include <tuple>
#include <regex> #include <regex>
#include <chrono> #include <chrono>
#include <semaphore>
#include <utility> #include <utility>
#ifdef __APPLE__ #ifdef __APPLE__
#include <CoreFoundation/CoreFoundation.h> #include <CoreFoundation/CoreFoundation.h>
#include <mach-o/dyld.h> #include <mach-o/dyld.h>
#include <limits.h> #include <limits.h>
#endif #endif
#if !defined(__clang__) && __GNUC__ < 11
#include <semaphore.h>
#else
#include <semaphore>
#endif
#include "btop_shared.hpp" #include "btop_shared.hpp"
#include "btop_tools.hpp" #include "btop_tools.hpp"
@ -424,18 +420,7 @@ namespace Runner {
atomic<bool> redraw (false); atomic<bool> redraw (false);
atomic<bool> coreNum_reset (false); atomic<bool> coreNum_reset (false);
//* Setup semaphore for triggering thread to do work std::binary_semaphore sem { 0 };
#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
//* RAII wrapper for pthread_mutex locking //* RAII wrapper for pthread_mutex locking
class thread_lock { class thread_lock {
@ -553,7 +538,7 @@ namespace Runner {
//* ----------------------------------------------- THREAD LOOP ----------------------------------------------- //* ----------------------------------------------- THREAD LOOP -----------------------------------------------
while (not Global::quitting) { while (not Global::quitting) {
thread_wait(); sem.acquire();
atomic_wait_for(active, true, 5000); atomic_wait_for(active, true, 5000);
if (active) { if (active) {
Global::exit_error_msg = "Runner thread failed to get active lock!"; 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(); if (Menu::active and not current_conf.background_update) Global::overlay.clear();
thread_trigger(); sem.release();
atomic_wait_for(active, false, 10); atomic_wait_for(active, false, 10);
} }
@ -868,7 +853,7 @@ namespace Runner {
clean_quit(1); clean_quit(1);
} }
} }
thread_trigger(); sem.release();
atomic_wait_for(active, false, 100); atomic_wait_for(active, false, 100);
atomic_wait_for(active, true, 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); pthread_sigmask(SIG_BLOCK, &mask, &Input::signal_mask);
//? Start runner thread //? Start runner thread
Runner::thread_sem_init();
if (pthread_create(&Runner::runner_id, nullptr, &Runner::_runner, nullptr) != 0) { if (pthread_create(&Runner::runner_id, nullptr, &Runner::_runner, nullptr) != 0) {
Global::exit_error_msg = "Failed to create _runner thread!"; Global::exit_error_msg = "Failed to create _runner thread!";
clean_quit(1); clean_quit(1);