Sfoglia il codice sorgente

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 4 anni fa
parent
commit
b445f15131
1 ha cambiato i file con 1 aggiunte e 1 eliminazioni
  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);