From 9ec5da36b62276ae22e348f26f88aaf646357d6d Mon Sep 17 00:00:00 2001 From: TheCharlatan Date: Sat, 6 May 2023 22:14:11 +0200 Subject: [PATCH] refactor: Move ScheduleBatchPriority to its own file With the previous move of AlertNotify out of the validation file, and thus out of the kernel library, ScheduleBatchPriority is the last remaining function used by the kernel library from util/system. Move it to its own file, such that util/system can be moved out of the util library in the following few commits. Moving util/system out of the kernel library removes further networking as well as shell related code from it. --- src/Makefile.am | 4 +++- src/node/blockstorage.cpp | 1 + src/util/batchpriority.cpp | 26 ++++++++++++++++++++++++++ src/util/batchpriority.h | 15 +++++++++++++++ src/util/system.cpp | 18 ------------------ src/util/system.h | 7 ------- 6 files changed, 45 insertions(+), 26 deletions(-) create mode 100644 src/util/batchpriority.cpp create mode 100644 src/util/batchpriority.h diff --git a/src/Makefile.am b/src/Makefile.am index 2bbd3436577..9764df7fbc6 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -280,6 +280,7 @@ BITCOIN_CORE_H = \ txrequest.h \ undo.h \ util/asmap.h \ + util/batchpriority.h \ util/bip32.h \ util/bitdeque.h \ util/bytevectorhash.h \ @@ -711,6 +712,7 @@ libbitcoin_util_a_SOURCES = \ support/cleanse.cpp \ sync.cpp \ util/asmap.cpp \ + util/batchpriority.cpp \ util/bip32.cpp \ util/bytevectorhash.cpp \ util/chaintype.cpp \ @@ -963,6 +965,7 @@ libbitcoinkernel_la_SOURCES = \ txdb.cpp \ txmempool.cpp \ uint256.cpp \ + util/batchpriority.cpp \ util/chaintype.cpp \ util/check.cpp \ util/exception.cpp \ @@ -978,7 +981,6 @@ libbitcoinkernel_la_SOURCES = \ util/string.cpp \ util/syscall_sandbox.cpp \ util/syserror.cpp \ - util/system.cpp \ util/thread.cpp \ util/threadnames.cpp \ util/time.cpp \ diff --git a/src/node/blockstorage.cpp b/src/node/blockstorage.cpp index f8d4e6c1da5..a97f837e285 100644 --- a/src/node/blockstorage.cpp +++ b/src/node/blockstorage.cpp @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include diff --git a/src/util/batchpriority.cpp b/src/util/batchpriority.cpp new file mode 100644 index 00000000000..c73aef1eb48 --- /dev/null +++ b/src/util/batchpriority.cpp @@ -0,0 +1,26 @@ +// Copyright (c) 2023 The Bitcoin Core developers +// Distributed under the MIT software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + +#include +#include + +#if (defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__DragonFly__)) +#include +#include +#endif + +#ifndef WIN32 +#include +#endif + +void ScheduleBatchPriority() +{ +#ifdef SCHED_BATCH + const static sched_param param{}; + const int rc = pthread_setschedparam(pthread_self(), SCHED_BATCH, ¶m); + if (rc != 0) { + LogPrintf("Failed to pthread_setschedparam: %s\n", SysErrorString(rc)); + } +#endif +} diff --git a/src/util/batchpriority.h b/src/util/batchpriority.h new file mode 100644 index 00000000000..5ffc8dd684d --- /dev/null +++ b/src/util/batchpriority.h @@ -0,0 +1,15 @@ +// Copyright (c) 2023 The Bitcoin Core developers +// Distributed under the MIT software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + +#ifndef BITCOIN_UTIL_BATCHPRIORITY_H +#define BITCOIN_UTIL_BATCHPRIORITY_H + +/** + * On platforms that support it, tell the kernel the calling thread is + * CPU-intensive and non-interactive. See SCHED_BATCH in sched(7) for details. + * + */ +void ScheduleBatchPriority(); + +#endif // BITCOIN_UTIL_BATCHPRIORITY_H diff --git a/src/util/system.cpp b/src/util/system.cpp index 598e6adb886..0b342c03a01 100644 --- a/src/util/system.cpp +++ b/src/util/system.cpp @@ -7,16 +7,9 @@ #include #include -#include #include -#if (defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__DragonFly__)) -#include -#include -#endif - #ifndef WIN32 -#include #include #else #include @@ -112,14 +105,3 @@ int64_t GetStartupTime() { return nStartupTime; } - -void ScheduleBatchPriority() -{ -#ifdef SCHED_BATCH - const static sched_param param{}; - const int rc = pthread_setschedparam(pthread_self(), SCHED_BATCH, ¶m); - if (rc != 0) { - LogPrintf("Failed to pthread_setschedparam: %s\n", SysErrorString(rc)); - } -#endif -} diff --git a/src/util/system.h b/src/util/system.h index e2fc3450f69..a8c049ad441 100644 --- a/src/util/system.h +++ b/src/util/system.h @@ -36,13 +36,6 @@ void runCommand(const std::string& strCommand); */ int GetNumCores(); -/** - * On platforms that support it, tell the kernel the calling thread is - * CPU-intensive and non-interactive. See SCHED_BATCH in sched(7) for details. - * - */ -void ScheduleBatchPriority(); - namespace util { //! Simplification of std insertion