浏览代码

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 年之前
父节点
当前提交
b445f15131
共有 1 个文件被更改,包括 1 次插入1 次删除
  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);