added 3 changesets to branch 'refs/remotes/pdziepak-github/scheduler' old head: fa6788d85d72f3f4da2873e749b46be13c7fc33a new head: 6c40a563bf1c5d011d9f483341d86768551d1fd8 overview: https://github.com/pdziepak/Haiku/compare/fa6788d...6c40a56 ---------------------------------------------------------------------------- de51e40: boot, kernel: Replace MAX_BOOT_CPUS with SMP_MAX_CPUS 33de9f6: kernel: Use SMP_MAX_CPUS instead of B_MAX_CPU_COUNT 6c40a56: kernel/smp: Fix warning [ Pawel Dziepak <pdziepak@xxxxxxxxxxx> ] ---------------------------------------------------------------------------- 16 files changed, 30 insertions(+), 33 deletions(-) headers/private/kernel/arch/x86/arch_kernel_args.h | 4 ++-- headers/private/kernel/boot/kernel_args.h | 2 +- .../boot/platform/bios_ia32/platform_kernel_args.h | 4 ++-- headers/private/kernel/smp.h | 3 --- src/system/boot/platform/bios_ia32/smp.cpp | 12 ++++++------ src/system/kernel/arch/x86/32/descriptors.cpp | 2 +- src/system/kernel/arch/x86/arch_smp.cpp | 4 ++-- .../x86/paging/x86_physical_page_mapper_large_memory.cpp | 2 +- src/system/kernel/cpu.cpp | 2 +- src/system/kernel/debug/debug.cpp | 4 ++-- src/system/kernel/debug/system_profiler.cpp | 4 ++-- src/system/kernel/debug/user_debugger.cpp | 2 +- src/system/kernel/heap.cpp | 6 +++--- src/system/kernel/smp.cpp | 6 +++--- src/system/kernel/thread.cpp | 2 +- src/system/kernel/timer.cpp | 4 ++-- ############################################################################ Commit: de51e40fc8a7487b61d61b9012b4499d655ebb41 Author: Pawel Dziepak <pdziepak@xxxxxxxxxxx> Date: Fri Dec 6 18:43:08 2013 UTC boot, kernel: Replace MAX_BOOT_CPUS with SMP_MAX_CPUS ---------------------------------------------------------------------------- diff --git a/headers/private/kernel/arch/x86/arch_kernel_args.h b/headers/private/kernel/arch/x86/arch_kernel_args.h index 7e6c967..a0dbae7 100644 --- a/headers/private/kernel/arch/x86/arch_kernel_args.h +++ b/headers/private/kernel/arch/x86/arch_kernel_args.h @@ -40,8 +40,8 @@ typedef struct { uint32 apic_phys; FixedWidthPointer<void> apic; uint32 ioapic_phys; - uint32 cpu_apic_id[MAX_BOOT_CPUS]; - uint32 cpu_apic_version[MAX_BOOT_CPUS]; + uint32 cpu_apic_id[SMP_MAX_CPUS]; + uint32 cpu_apic_version[SMP_MAX_CPUS]; // hpet stuff uint32 hpet_phys; FixedWidthPointer<void> hpet; diff --git a/headers/private/kernel/boot/kernel_args.h b/headers/private/kernel/boot/kernel_args.h index 95542b1..1ebd5c1 100644 --- a/headers/private/kernel/boot/kernel_args.h +++ b/headers/private/kernel/boot/kernel_args.h @@ -59,7 +59,7 @@ typedef struct kernel_args { uint64 ignored_physical_memory; uint32 num_cpus; - addr_range cpu_kstack[MAX_BOOT_CPUS]; + addr_range cpu_kstack[SMP_MAX_CPUS]; // boot volume KMessage data FixedWidthPointer<void> boot_volume; diff --git a/headers/private/kernel/boot/platform/bios_ia32/platform_kernel_args.h b/headers/private/kernel/boot/platform/bios_ia32/platform_kernel_args.h index a191a0d..6772222 100644 --- a/headers/private/kernel/boot/platform/bios_ia32/platform_kernel_args.h +++ b/headers/private/kernel/boot/platform/bios_ia32/platform_kernel_args.h @@ -15,8 +15,8 @@ #include <util/FixedWidthPointer.h> -// must match SMP_MAX_CPUS in arch_smp.h -#define MAX_BOOT_CPUS 8 +#define SMP_MAX_CPUS 8 + #define MAX_PHYSICAL_MEMORY_RANGE 32 #define MAX_PHYSICAL_ALLOCATED_RANGE 32 #define MAX_VIRTUAL_ALLOCATED_RANGE 32 diff --git a/headers/private/kernel/smp.h b/headers/private/kernel/smp.h index 1f4b0f4..88a89e4 100644 --- a/headers/private/kernel/smp.h +++ b/headers/private/kernel/smp.h @@ -17,9 +17,6 @@ #include <string.h> -#define SMP_MAX_CPUS MAX_BOOT_CPUS - - struct kernel_args; diff --git a/src/system/boot/platform/bios_ia32/smp.cpp b/src/system/boot/platform/bios_ia32/smp.cpp index a0ed686..9a2e77e 100644 --- a/src/system/boot/platform/bios_ia32/smp.cpp +++ b/src/system/boot/platform/bios_ia32/smp.cpp @@ -158,9 +158,9 @@ smp_do_mp_config(mp_floating_struct *floatingStruct) = (struct mp_base_processor *)pointer; pointer += sizeof(struct mp_base_processor); - if (gKernelArgs.num_cpus == MAX_BOOT_CPUS) { - TRACE(("smp: already reached maximum boot CPUs (%d)\n", - MAX_BOOT_CPUS)); + if (gKernelArgs.num_cpus == SMP_MAX_CPUS) { + TRACE(("smp: already reached maximum CPUs (%d)\n", + SMP_MAX_CPUS)); continue; } @@ -277,9 +277,9 @@ smp_do_acpi_config(void) switch (apic->type) { case ACPI_MADT_LOCAL_APIC: { - if (gKernelArgs.num_cpus == MAX_BOOT_CPUS) { - TRACE(("smp: already reached maximum boot CPUs (%d)\n", - MAX_BOOT_CPUS)); + if (gKernelArgs.num_cpus == SMP_MAX_CPUS) { + TRACE(("smp: already reached maximum CPUs (%d)\n", + SMP_MAX_CPUS)); break; } diff --git a/src/system/kernel/cpu.cpp b/src/system/kernel/cpu.cpp index 2fdf6fd..3a3df3a 100644 --- a/src/system/kernel/cpu.cpp +++ b/src/system/kernel/cpu.cpp @@ -25,7 +25,7 @@ /* global per-cpu structure */ -cpu_ent gCPU[MAX_BOOT_CPUS]; +cpu_ent gCPU[SMP_MAX_CPUS]; uint32 gCPUCacheLevelCount; static cpu_topology_node sCPUTopology; diff --git a/src/system/kernel/smp.cpp b/src/system/kernel/smp.cpp index 63d2805..9e987a5 100644 --- a/src/system/kernel/smp.cpp +++ b/src/system/kernel/smp.cpp @@ -188,9 +188,9 @@ dump_spinlock(int argc, char** argv) static struct { spinlock *lock; bigtime_t timestamp; -} sLatency[B_MAX_CPU_COUNT][NUM_LATENCY_LOCKS]; +} sLatency[SMP_MAX_CPUS][NUM_LATENCY_LOCKS]; -static int32 sLatencyIndex[B_MAX_CPU_COUNT]; +static int32 sLatencyIndex[SMP_MAX_CPUS]; static bool sEnableLatencyCheck; ############################################################################ Commit: 33de9f6c324741760301067c04cc99c13386644e Author: Pawel Dziepak <pdziepak@xxxxxxxxxxx> Date: Fri Dec 6 18:53:56 2013 UTC kernel: Use SMP_MAX_CPUS instead of B_MAX_CPU_COUNT ---------------------------------------------------------------------------- diff --git a/src/system/kernel/arch/x86/32/descriptors.cpp b/src/system/kernel/arch/x86/32/descriptors.cpp index d215dc0..53b60e4 100644 --- a/src/system/kernel/arch/x86/32/descriptors.cpp +++ b/src/system/kernel/arch/x86/32/descriptors.cpp @@ -28,7 +28,7 @@ #include "interrupts.h" -static interrupt_descriptor* sIDTs[B_MAX_CPU_COUNT]; +static interrupt_descriptor* sIDTs[SMP_MAX_CPUS]; // table with functions handling respective interrupts typedef void interrupt_handler_function(struct iframe* frame); diff --git a/src/system/kernel/arch/x86/arch_smp.cpp b/src/system/kernel/arch/x86/arch_smp.cpp index 340854b..0a97a97 100644 --- a/src/system/kernel/arch/x86/arch_smp.cpp +++ b/src/system/kernel/arch/x86/arch_smp.cpp @@ -34,8 +34,8 @@ #endif -static uint32 sCPUAPICIds[B_MAX_CPU_COUNT]; -static uint32 sAPICVersions[B_MAX_CPU_COUNT]; +static uint32 sCPUAPICIds[SMP_MAX_CPUS]; +static uint32 sAPICVersions[SMP_MAX_CPUS]; static int32 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 78301a7..07c9446 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 @@ -168,7 +168,7 @@ private: PhysicalPageSlot* fDebugSlot; PhysicalPageSlotPool* fInitialPool; LargeMemoryTranslationMapPhysicalPageMapper fKernelMapper; - PhysicalPageOpsCPUData fPerCPUData[B_MAX_CPU_COUNT]; + PhysicalPageOpsCPUData fPerCPUData[SMP_MAX_CPUS]; }; static LargeMemoryPhysicalPageMapper sPhysicalPageMapper; diff --git a/src/system/kernel/debug/debug.cpp b/src/system/kernel/debug/debug.cpp index b56145b..da74437 100644 --- a/src/system/kernel/debug/debug.cpp +++ b/src/system/kernel/debug/debug.cpp @@ -81,7 +81,7 @@ void call_modules_hook(bool enter); static void syslog_write(const char* text, int32 length, bool notify); -static arch_debug_registers sDebugRegisters[B_MAX_CPU_COUNT]; +static arch_debug_registers sDebugRegisters[SMP_MAX_CPUS]; static debug_page_fault_info sPageFaultInfo; @@ -143,7 +143,7 @@ static int32 sInDebugger = 0; static bool sPreviousDprintfState; static volatile bool sHandOverKDL = false; static int32 sHandOverKDLToCPU = -1; -static bool sCPUTrapped[B_MAX_CPU_COUNT]; +static bool sCPUTrapped[SMP_MAX_CPUS]; #define distance(a, b) ((a) < (b) ? (b) - (a) : (a) - (b)) diff --git a/src/system/kernel/debug/system_profiler.cpp b/src/system/kernel/debug/system_profiler.cpp index 5b341b2..af35707 100644 --- a/src/system/kernel/debug/system_profiler.cpp +++ b/src/system/kernel/debug/system_profiler.cpp @@ -199,8 +199,8 @@ private: bool fWaitObjectNotificationsRequested; Thread* volatile fWaitingProfilerThread; bool fProfilingActive; - bool fReentered[B_MAX_CPU_COUNT]; - CPUProfileData fCPUData[B_MAX_CPU_COUNT]; + bool fReentered[SMP_MAX_CPUS]; + CPUProfileData fCPUData[SMP_MAX_CPUS]; WaitObject* fWaitObjectBuffer; int32 fWaitObjectCount; WaitObjectList fUsedWaitObjects; diff --git a/src/system/kernel/debug/user_debugger.cpp b/src/system/kernel/debug/user_debugger.cpp index 6999556..a4eb75e 100644 --- a/src/system/kernel/debug/user_debugger.cpp +++ b/src/system/kernel/debug/user_debugger.cpp @@ -53,7 +53,7 @@ static port_id sDefaultDebuggerPort = -1; // accessed atomically -static timer sProfilingTimers[B_MAX_CPU_COUNT]; +static timer sProfilingTimers[SMP_MAX_CPUS]; // a profiling timer for each CPU -- used when a profiled thread is running // on that CPU diff --git a/src/system/kernel/heap.cpp b/src/system/kernel/heap.cpp index a2815bf..9a6ab41 100644 --- a/src/system/kernel/heap.cpp +++ b/src/system/kernel/heap.cpp @@ -187,9 +187,9 @@ static const heap_class sHeapClasses[HEAP_CLASS_COUNT] = { static uint32 sHeapCount; -static heap_allocator *sHeaps[HEAP_CLASS_COUNT * B_MAX_CPU_COUNT]; -static uint32 *sLastGrowRequest[HEAP_CLASS_COUNT * B_MAX_CPU_COUNT]; -static uint32 *sLastHandledGrowRequest[HEAP_CLASS_COUNT * B_MAX_CPU_COUNT]; +static heap_allocator *sHeaps[HEAP_CLASS_COUNT * SMP_MAX_CPUS]; +static uint32 *sLastGrowRequest[HEAP_CLASS_COUNT * SMP_MAX_CPUS]; +static uint32 *sLastHandledGrowRequest[HEAP_CLASS_COUNT * SMP_MAX_CPUS]; static heap_allocator *sVIPHeap; static heap_allocator *sGrowHeap = NULL; diff --git a/src/system/kernel/thread.cpp b/src/system/kernel/thread.cpp index fc6cbe3..6f9d4da1 100644 --- a/src/system/kernel/thread.cpp +++ b/src/system/kernel/thread.cpp @@ -70,7 +70,7 @@ typedef BKernel::TeamThreadTable<Thread> ThreadHashTable; // thread list -static Thread sIdleThreads[B_MAX_CPU_COUNT]; +static Thread sIdleThreads[SMP_MAX_CPUS]; static ThreadHashTable sThreadHash; static spinlock sThreadHashLock = B_SPINLOCK_INITIALIZER; static thread_id sNextThreadID = 2; diff --git a/src/system/kernel/timer.cpp b/src/system/kernel/timer.cpp index 5a3ea20..28284f4 100644 --- a/src/system/kernel/timer.cpp +++ b/src/system/kernel/timer.cpp @@ -33,7 +33,7 @@ struct per_cpu_timer_data { bigtime_t real_time_offset; }; -static per_cpu_timer_data sPerCPU[B_MAX_CPU_COUNT]; +static per_cpu_timer_data sPerCPU[SMP_MAX_CPUS]; //#define TRACE_TIMER @@ -383,7 +383,7 @@ cancel_timer(timer* event) int cpu = event->cpu; SpinLocker spinLocker; while (true) { - if (cpu >= B_MAX_CPU_COUNT) + if (cpu >= SMP_MAX_CPUS) return false; spinLocker.SetTo(sPerCPU[cpu].lock, false); ############################################################################ Commit: 6c40a563bf1c5d011d9f483341d86768551d1fd8 Author: Pawel Dziepak <pdziepak@xxxxxxxxxxx> Date: Fri Dec 6 18:57:04 2013 UTC kernel/smp: Fix warning ---------------------------------------------------------------------------- diff --git a/src/system/kernel/smp.cpp b/src/system/kernel/smp.cpp index 9e987a5..bc7f583 100644 --- a/src/system/kernel/smp.cpp +++ b/src/system/kernel/smp.cpp @@ -1366,7 +1366,7 @@ smp_cpu_rendezvous(uint32* var) { atomic_add((int32*)var, 1); - while ((uint32)atomic_get((int32*)var) < sNumCPUs) + while (atomic_get((int32*)var) < sNumCPUs) cpu_wait((int32*)var, sNumCPUs); }