Explorar o código

Kernel: Avoid flushing the tlb if there's only one thread

If we're flushing user space pointers and the process only has one
thread, we do not need to broadcast this to other processors as
they will all discard that request anyway.
Tom %!s(int64=4) %!d(string=hai) anos
pai
achega
b445f15131
Modificáronse 1 ficheiros con 1 adicións e 1 borrados
  1. 1 1
      Kernel/Arch/i386/CPU.cpp

+ 1 - 1
Kernel/Arch/i386/CPU.cpp

@@ -1703,7 +1703,7 @@ void Processor::flush_tlb_local(VirtualAddress vaddr, size_t page_count)
 
 void Processor::flush_tlb(const PageDirectory* page_directory, VirtualAddress vaddr, size_t page_count)
 {
-    if (s_smp_enabled)
+    if (s_smp_enabled && (!is_user_address(vaddr) || Process::current()->thread_count() > 1))
         smp_broadcast_flush_tlb(page_directory, vaddr, page_count);
     else
         flush_tlb_local(vaddr, page_count);