首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么用户空间应用程序需要内核头?

为什么用户空间应用程序需要内核头?
EN

Stack Overflow用户
提问于 2015-04-27 05:34:41
回答 1查看 86关注 0票数 0

我正在研究一个智能手机项目。在编译过程中,它正在安装用于构建用户空间的内核头文件。

为什么用户空间应用程序需要内核头?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-27 07:25:01

通常,这些头是必需的,因为用户空间应用程序经常与内核对话,传递一些数据。要做到这一点,他们必须就他们之间传递的数据结构达成一致。

大多数内核头只需要libc库(如果使用的话),因为它通常通过提供符合POSIX等标准的抽象来向您隐藏所有低级的方面(它通常会提供自己的包含文件)。例如,这些头将提供所有syscall数字和它们的参数所使用的所有结构的定义。

但是,内核提供的一些“自定义服务”不是由libc处理的。一个例子是创建与某些硬件驱动程序直接对话的用户空间程序。这可能需要传递一些数据结构(所以您需要一些结构定义),知道一些神奇的数字(所以您需要一些定义),等等。

例如,从内核源代码中查看hid-example.c。例如,它将调用这个ioctl:

代码语言:javascript
复制
struct hidraw_report_descriptor rpt_desc;
[...]
ioctl(fd, HIDIOCGRDESC, &rpt_desc);

但是它是从哪里得到HIDIOCGRDESC的,还是知道struct hidraw_report_descriptor的结构呢?它们当然是在这个应用程序包含的linux/hidraw.h中定义的。

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

https://stackoverflow.com/questions/29887930

复制
相关文章

相似问题

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