首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >alloc_pages()由__free_pages()配对

alloc_pages()由__free_pages()配对
EN

Stack Overflow用户
提问于 2014-02-18 05:50:26
回答 1查看 2K关注 0票数 1

我读了“”一书,发现了一些让我困惑的函数,如下所示:

代码语言:javascript
运行
复制
struct page *alloc_pages(gfp_t gfp_mask, unsigned int order)
void __free_pages(struct page *page, unsigned int order)

unsigned long __get_free_pages(gfp_t gfp_mask, unsigned int order)
void free_pages(unsigned long addr, unsigned int order)

问题是两个下划线在函数名中的使用,以及函数对的方式。1. linux内核何时在其函数名中使用两个下划线? 2.为什么alloc_pages与__free_pages成对,而不是free_pages?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-21 07:40:15

你可以注意到:

alloc_pages() / __free_pages()以"page *“(页描述符)作为参数。它们通常由一些基础结构内核代码在内部使用,比如页面错误处理程序,它们希望操作页面描述符而不是内存块内容。

__get_free_pages() / free_pages()以“无符号长”(内存块的虚拟地址)作为参数,它们可以被希望使用内存块本身的代码使用,在分配之后,您可以对这个内存块进行读写。

至于他们的名字和双下划线"__",你不需要太费心。有时,在首次编写内核函数时,它们会被随意命名,而不需要太多考虑。当人们认为名称不合适时,这些函数后来已经在内核中被广泛使用,而内核人员只是懒得修改它们。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21845378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档