From 057fe1910dbe73e3b9c0186405e2cfb8536e6451 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Wed, 1 Sep 2021 13:08:49 -0400 Subject: [PATCH] kernel: Break thread-related AutoLockers into a separate header. Including thread.h brings a massive array of things with it from the kernel thread arch headers, team and thread definitions, hash tables, linked lists, Referenceable, etc. that the vast majority of AutoLock.h consumers neither want nor need. So, put these in a separate header, and adjust all consumers of these lockers to include the new file. This change exposes the fact that a lot of files were inadvertently making use of headers included indirectly through thread.h. Those will be fixed in the next commit. --- headers/private/kernel/util/AutoLock.h | 25 ----------- headers/private/kernel/util/ThreadAutoLock.h | 43 +++++++++++++++++++ .../paging/32bit/ARMVMTranslationMap32Bit.cpp | 1 + .../arm_physical_page_mapper_large_memory.cpp | 1 + .../generic/generic_vm_physical_page_ops.cpp | 1 + .../paging/040/M68KVMTranslationMap040.cpp | 1 + ...m68k_physical_page_mapper_large_memory.cpp | 1 + .../ppc/paging/460/PPCVMTranslationMap460.cpp | 1 + .../classic/PPCVMTranslationMapClassic.cpp | 1 + .../arch/riscv64/RISCV64VMTranslationMap.cpp | 1 + .../paging/32bit/X86VMTranslationMap32Bit.cpp | 1 + .../paging/64bit/X86VMTranslationMap64Bit.cpp | 1 + .../x86/paging/pae/X86VMTranslationMapPAE.cpp | 1 + .../x86_physical_page_mapper_large_memory.cpp | 1 + src/system/kernel/cpu.cpp | 1 + src/system/kernel/debug/core_dump.cpp | 1 + src/system/kernel/debug/system_profiler.cpp | 1 + src/system/kernel/debug/user_debugger.cpp | 1 + src/system/kernel/fs/vfs.cpp | 1 + src/system/kernel/image.cpp | 1 + src/system/kernel/signal.cpp | 1 + src/system/kernel/team.cpp | 1 + src/system/kernel/thread.cpp | 1 + src/system/kernel/usergroup.cpp | 1 + src/system/kernel/vm/vm.cpp | 1 + 25 files changed, 66 insertions(+), 25 deletions(-) create mode 100644 headers/private/kernel/util/ThreadAutoLock.h diff --git a/headers/private/kernel/util/AutoLock.h b/headers/private/kernel/util/AutoLock.h index c081945e88..9a2639e52a 100644 --- a/headers/private/kernel/util/AutoLock.h +++ b/headers/private/kernel/util/AutoLock.h @@ -14,7 +14,6 @@ #include #include -#include namespace BPrivate { @@ -298,27 +297,6 @@ typedef AutoLocker InterruptsWriteSequentialLocker; -class ThreadCPUPinLocking { -public: - inline bool Lock(Thread* thread) - { - thread_pin_to_current_cpu(thread); - return true; - } - - inline void Unlock(Thread* thread) - { - thread_unpin_from_current_cpu(thread); - } -}; - -typedef AutoLocker ThreadCPUPinner; - - -typedef AutoLocker TeamLocker; -typedef AutoLocker ThreadLocker; - - } // namespace BPrivate using BPrivate::AutoLocker; @@ -335,9 +313,6 @@ using BPrivate::WriteSpinLocker; using BPrivate::InterruptsWriteSpinLocker; using BPrivate::WriteSequentialLocker; using BPrivate::InterruptsWriteSequentialLocker; -using BPrivate::ThreadCPUPinner; -using BPrivate::TeamLocker; -using BPrivate::ThreadLocker; #endif // KERNEL_UTIL_AUTO_LOCKER_H diff --git a/headers/private/kernel/util/ThreadAutoLock.h b/headers/private/kernel/util/ThreadAutoLock.h new file mode 100644 index 0000000000..d492852f9c --- /dev/null +++ b/headers/private/kernel/util/ThreadAutoLock.h @@ -0,0 +1,43 @@ +/* + * Copyright 2021, Haiku, Inc. All rights reserved. + * Distributed under the terms of the MIT License. + */ +#ifndef KERNEL_UTIL_THREAD_AUTO_LOCKER_H +#define KERNEL_UTIL_THREAD_AUTO_LOCKER_H + + +#include + +#include + + +namespace BPrivate { + + +class ThreadCPUPinLocking { +public: + inline bool Lock(Thread* thread) + { + thread_pin_to_current_cpu(thread); + return true; + } + + inline void Unlock(Thread* thread) + { + thread_unpin_from_current_cpu(thread); + } +}; + +typedef AutoLocker ThreadCPUPinner; +typedef AutoLocker TeamLocker; +typedef AutoLocker ThreadLocker; + + +} // namespace BPrivate + +using BPrivate::ThreadCPUPinner; +using BPrivate::TeamLocker; +using BPrivate::ThreadLocker; + + +#endif // KERNEL_UTIL_THREAD_AUTO_LOCKER_H diff --git a/src/system/kernel/arch/arm/paging/32bit/ARMVMTranslationMap32Bit.cpp b/src/system/kernel/arch/arm/paging/32bit/ARMVMTranslationMap32Bit.cpp index 4fe71b2aa6..ab431558bc 100644 --- a/src/system/kernel/arch/arm/paging/32bit/ARMVMTranslationMap32Bit.cpp +++ b/src/system/kernel/arch/arm/paging/32bit/ARMVMTranslationMap32Bit.cpp @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include diff --git a/src/system/kernel/arch/arm/paging/arm_physical_page_mapper_large_memory.cpp b/src/system/kernel/arch/arm/paging/arm_physical_page_mapper_large_memory.cpp index e786f333fb..0b4a2e44f8 100644 --- a/src/system/kernel/arch/arm/paging/arm_physical_page_mapper_large_memory.cpp +++ b/src/system/kernel/arch/arm/paging/arm_physical_page_mapper_large_memory.cpp @@ -34,6 +34,7 @@ #include #include #include +#include #include #include #include diff --git a/src/system/kernel/arch/generic/generic_vm_physical_page_ops.cpp b/src/system/kernel/arch/generic/generic_vm_physical_page_ops.cpp index 8053fbf330..8f8ac7eb34 100644 --- a/src/system/kernel/arch/generic/generic_vm_physical_page_ops.cpp +++ b/src/system/kernel/arch/generic/generic_vm_physical_page_ops.cpp @@ -8,6 +8,7 @@ #include #include +#include status_t diff --git a/src/system/kernel/arch/m68k/paging/040/M68KVMTranslationMap040.cpp b/src/system/kernel/arch/m68k/paging/040/M68KVMTranslationMap040.cpp index 876d50eebe..c54879973f 100644 --- a/src/system/kernel/arch/m68k/paging/040/M68KVMTranslationMap040.cpp +++ b/src/system/kernel/arch/m68k/paging/040/M68KVMTranslationMap040.cpp @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include diff --git a/src/system/kernel/arch/m68k/paging/m68k_physical_page_mapper_large_memory.cpp b/src/system/kernel/arch/m68k/paging/m68k_physical_page_mapper_large_memory.cpp index e3507a3d93..e4a4dc83de 100644 --- a/src/system/kernel/arch/m68k/paging/m68k_physical_page_mapper_large_memory.cpp +++ b/src/system/kernel/arch/m68k/paging/m68k_physical_page_mapper_large_memory.cpp @@ -35,6 +35,7 @@ #include #include #include +#include #include #include #include diff --git a/src/system/kernel/arch/ppc/paging/460/PPCVMTranslationMap460.cpp b/src/system/kernel/arch/ppc/paging/460/PPCVMTranslationMap460.cpp index 86a215f294..b028e02db9 100644 --- a/src/system/kernel/arch/ppc/paging/460/PPCVMTranslationMap460.cpp +++ b/src/system/kernel/arch/ppc/paging/460/PPCVMTranslationMap460.cpp @@ -84,6 +84,7 @@ #include #include #include +#include #include #include #include diff --git a/src/system/kernel/arch/ppc/paging/classic/PPCVMTranslationMapClassic.cpp b/src/system/kernel/arch/ppc/paging/classic/PPCVMTranslationMapClassic.cpp index 1f8299e51f..dd7131743a 100644 --- a/src/system/kernel/arch/ppc/paging/classic/PPCVMTranslationMapClassic.cpp +++ b/src/system/kernel/arch/ppc/paging/classic/PPCVMTranslationMapClassic.cpp @@ -84,6 +84,7 @@ #include #include #include +#include #include #include #include diff --git a/src/system/kernel/arch/riscv64/RISCV64VMTranslationMap.cpp b/src/system/kernel/arch/riscv64/RISCV64VMTranslationMap.cpp index 81e408cdd2..ba839044c0 100644 --- a/src/system/kernel/arch/riscv64/RISCV64VMTranslationMap.cpp +++ b/src/system/kernel/arch/riscv64/RISCV64VMTranslationMap.cpp @@ -17,6 +17,7 @@ #include #include +#include //#define DISABLE_MODIFIED_FLAGS 1 diff --git a/src/system/kernel/arch/x86/paging/32bit/X86VMTranslationMap32Bit.cpp b/src/system/kernel/arch/x86/paging/32bit/X86VMTranslationMap32Bit.cpp index 939b4d206b..f11b6955ad 100644 --- a/src/system/kernel/arch/x86/paging/32bit/X86VMTranslationMap32Bit.cpp +++ b/src/system/kernel/arch/x86/paging/32bit/X86VMTranslationMap32Bit.cpp @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include diff --git a/src/system/kernel/arch/x86/paging/64bit/X86VMTranslationMap64Bit.cpp b/src/system/kernel/arch/x86/paging/64bit/X86VMTranslationMap64Bit.cpp index 12d320befa..71e1f891ac 100644 --- a/src/system/kernel/arch/x86/paging/64bit/X86VMTranslationMap64Bit.cpp +++ b/src/system/kernel/arch/x86/paging/64bit/X86VMTranslationMap64Bit.cpp @@ -15,6 +15,7 @@ #include #include #include +#include #include #include #include diff --git a/src/system/kernel/arch/x86/paging/pae/X86VMTranslationMapPAE.cpp b/src/system/kernel/arch/x86/paging/pae/X86VMTranslationMapPAE.cpp index d45b0a223c..26c19ca587 100644 --- a/src/system/kernel/arch/x86/paging/pae/X86VMTranslationMapPAE.cpp +++ b/src/system/kernel/arch/x86/paging/pae/X86VMTranslationMapPAE.cpp @@ -15,6 +15,7 @@ #include #include #include +#include #include #include #include diff --git a/src/system/kernel/arch/x86/paging/x86_physical_page_mapper_large_memory.cpp b/src/system/kernel/arch/x86/paging/x86_physical_page_mapper_large_memory.cpp index e816af1ea8..87d9df27ea 100644 --- a/src/system/kernel/arch/x86/paging/x86_physical_page_mapper_large_memory.cpp +++ b/src/system/kernel/arch/x86/paging/x86_physical_page_mapper_large_memory.cpp @@ -33,6 +33,7 @@ #include #include #include +#include #include #include #include diff --git a/src/system/kernel/cpu.cpp b/src/system/kernel/cpu.cpp index 64932dae81..99348a21d0 100644 --- a/src/system/kernel/cpu.cpp +++ b/src/system/kernel/cpu.cpp @@ -23,6 +23,7 @@ #include #include #include +#include /* global per-cpu structure */ diff --git a/src/system/kernel/debug/core_dump.cpp b/src/system/kernel/debug/core_dump.cpp index 3ce002c144..11536c81b4 100644 --- a/src/system/kernel/debug/core_dump.cpp +++ b/src/system/kernel/debug/core_dump.cpp @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include diff --git a/src/system/kernel/debug/system_profiler.cpp b/src/system/kernel/debug/system_profiler.cpp index 2ff451db17..62a6a4749c 100644 --- a/src/system/kernel/debug/system_profiler.cpp +++ b/src/system/kernel/debug/system_profiler.cpp @@ -10,6 +10,7 @@ #include #include +#include #include diff --git a/src/system/kernel/debug/user_debugger.cpp b/src/system/kernel/debug/user_debugger.cpp index 2553c073cd..6b36628a41 100644 --- a/src/system/kernel/debug/user_debugger.cpp +++ b/src/system/kernel/debug/user_debugger.cpp @@ -34,6 +34,7 @@ #include #include +#include #include "BreakpointManager.h" diff --git a/src/system/kernel/fs/vfs.cpp b/src/system/kernel/fs/vfs.cpp index 476a4d782b..440f5fbfb3 100644 --- a/src/system/kernel/fs/vfs.cpp +++ b/src/system/kernel/fs/vfs.cpp @@ -52,6 +52,7 @@ #include #include #include +#include #include #include #include diff --git a/src/system/kernel/image.cpp b/src/system/kernel/image.cpp index 3fb9b72051..9f3b9b3085 100644 --- a/src/system/kernel/image.cpp +++ b/src/system/kernel/image.cpp @@ -18,6 +18,7 @@ #include #include #include +#include #include #include diff --git a/src/system/kernel/signal.cpp b/src/system/kernel/signal.cpp index cea1c3168e..6300c08cf2 100644 --- a/src/system/kernel/signal.cpp +++ b/src/system/kernel/signal.cpp @@ -35,6 +35,7 @@ #include #include #include +#include //#define TRACE_SIGNAL diff --git a/src/system/kernel/team.cpp b/src/system/kernel/team.cpp index 796c92327d..a32adebd63 100644 --- a/src/system/kernel/team.cpp +++ b/src/system/kernel/team.cpp @@ -58,6 +58,7 @@ #include #include #include +#include #include "TeamThreadTables.h" diff --git a/src/system/kernel/thread.cpp b/src/system/kernel/thread.cpp index cc103c2db9..bea34448da 100644 --- a/src/system/kernel/thread.cpp +++ b/src/system/kernel/thread.cpp @@ -26,6 +26,7 @@ #include #include +#include #include #include diff --git a/src/system/kernel/usergroup.cpp b/src/system/kernel/usergroup.cpp index 5d2c412ac5..f2cf198d84 100644 --- a/src/system/kernel/usergroup.cpp +++ b/src/system/kernel/usergroup.cpp @@ -19,6 +19,7 @@ #include #include #include +#include #include #include diff --git a/src/system/kernel/vm/vm.cpp b/src/system/kernel/vm/vm.cpp index 8863934461..05e259b9c0 100644 --- a/src/system/kernel/vm/vm.cpp +++ b/src/system/kernel/vm/vm.cpp @@ -47,6 +47,7 @@ #include #include #include +#include #include #include #include