+ -
当前位置:首页 → 问答吧 → insert_vm_struct

insert_vm_struct

时间:2010-12-08

来源:互联网

void insert_vm_struct(struct mm_struct *mm, struct vm_area_struct *vmp)
{
        lock_vma_mappings(vmp);
        spin_lock(&current->mm->page_table_lock);
        __insert_vm_struct(mm, vmp);
        spin_unlock(&current->mm->page_table_lock);
        unlock_vma_mappings(vmp);
}

这里为什么是spin_lock(&current->mm->page_table_lock);而不是spin_lock(&mm->page_table_lock);
current->mm和mm有什么不同吗?难道参数mm还可能会是别的进程的mm吗? 谢谢!

作者: stone421   发布时间: 2010-12-08

大侠们去哪了?

作者: stone421   发布时间: 2010-12-09

这块没有深入研究。
但是单独就代码来看,你要搞清楚 insert 动作时针对哪个链表操作的,这个链表本应由哪个锁控制

作者: Godbach   发布时间: 2010-12-09