gpt4 book ai didi

linux - MS_INVALIDATE 的历史和当前使用

转载 作者:太空狗 更新时间:2023-10-29 12:42:13 25 4
gpt4 key购买 nike

我一直在努力了解如何正确使用这个标志,但互联网上存在相互矛盾的信息。

我的理解是这个标志目前在 linux 内核中是一个空操作。 https://github.com/tinganho/linux-kernel/blob/master/mm/msync.c

添加此标志的任何历史原因(设计选择)?

最佳答案

在来自 msync.c 的代码中可以看到:

    if ((flags & MS_INVALIDATE) &&
(vma->vm_flags & VM_LOCKED)) {
error = -EBUSY;
goto out_unlock;
}

基本上,我们知道 MS_INVALIDATE 正在被评估,如果 vma 指向的当前映射被锁定,则 msync() 调用将因 EBUSY 而失败。

根据(Linux 手册页项目 3.74 版的一部分,msync(2)):

MS_INVALIDATE asks to invalidate other mappings of the same file (so that they can be updated with the fresh values just written).

因为如果链接到 vma 列表的任何文件映射被锁定,它就不能失效,所以调用将失败,否则(否则不设置 MS_INVALIDATE 标志)它不会。

所以,现在回答你的问题,它不能被认为是空操作,因为它会影响设置时 msync() 的行为。

关于linux - MS_INVALIDATE 的历史和当前使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38689221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com