如何解决使用get_user_pages_fast后是否应该释放数据?
我正在使用 get_user_pages_fast,我在用户中分配一个内存缓冲区并在内核空间中创建一个页面。
使用此内存后是否应该释放结构页面**?或调用特定的发布功能?
谢谢!
解决方法
来自 get_user_pages()
的文档(具有类似的功能,但参数更多,并且需要一个信号量):
返回的每个页面在完成后必须通过 put_page 调用释放。 vmas 仅在 mmap_sem 保持时保持有效。
作为一个侧节点,如果你要释放一些东西,它会传递一个 struct pages *
(释放一个 struct pages
),而不是 struct pages **
,因为一个指向 { {1}} 被传递用作返回值。
但是,您通常不应该假设您应该在不知道应该释放内核的情况下释放任意内容。通常,内核提供了创建和销毁您正在使用的任何对象的函数。
通常,当您获得指示时,幕后还有很多事情要做。可能有信号量、引用计数等。这也可能是指向内核中“真实”使用对象的指针,而不仅仅是为您制作的某些结构,因此释放它可以在其他代码段下撕掉地毯.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。