【linux】Linux kernel uapi header file(用户态头文件)
uapi目录的创建原因
Linux在3.7以后把很多header file移到 include/uapi或是arch/xxxx/include/uapi下,为了解决include recursive(循环包含头文件)的问题。
英文参考文档:https://lwn.net/Articles/507794/
解决include recursive问题的方法
例如:在A.h中inline function时发现里面用到的某些struct定义在B.h中,而B.h中又有inline function需要用到A.h中的struct,就会造成循环包含recursive include
uapi的创建
把userspace API的文件独立到 include/uapi跟arch/xxxx/include/uapi下,
举例来说本来header中
/* Header comments (copyright, etc.) */#ifndef _XXXXXX_H /* Guard macro preventing double inclusion */#define _XXXXXX_H[User-space definitions]#ifdef __KERNEL__[Kernel-space definitions]#endif /* __KERNEL__ */[User-space definitions]#endif /* End prevent double inclusion */
换成如下两个文件
a. kernel space的东西放在原本路径下
/* Header comments (copyright, etc.) */#ifndef _XXXXXX_H /* Guard macro preventing double inclusion */#define _XXXXXX_H#include <include/uapi/path/to/header.h>[Kernel-space definitions]#endif /* End prevent double inclusion *//* Header comments (copyright, etc.) */
b. uapi目录下创建同名文件
#ifndef _UAPI__XXXXXX_H /* Guard macro preventing double inclusion */
#define _UAPI__XXXXXX_H
[User-space definitions]#endif /* End prevent double inclusion */
好处
减少与简化kernel-only header的size;
现在kernel header有的是文件中一部分export给userspace用。这样做简化了头文件间的交互相依性。
处理用户态的人更容易追踪API的变更,透过git来追踪uapi下的log更容易在每个kernel的释放版本中知道做了那些修改
转发自:http://vh21.github.io/linux/2014/11/21/linux-kernel-uapi-include-file.html
【linux】Linux kernel uapi header file(用户态头文件)相关推荐
- Linux下利用protoc命令生成protobuf的头文件和源文件,根据mesType.proto文件
Linux下利用protoc命令生成protobuf的头文件和源文件,根据mesType.proto文件 protobuf的message文件为 msgType.proto 生成c++头文件和源文件的 ...
- linux内核中链表代码分析---list.h头文件分析(一)
linux内核中链表代码分析---list.h头文件分析(一) 16年2月27日17:13:14 在学习数据结构时,有一个重要的知识点就是链表.对于链表的一些基本操作,它的最好学习资料就是内核中的li ...
- linux内核中链表代码分析---list.h头文件分析(二)【转】
转自:http://blog.chinaunix.net/uid-30254565-id-5637598.html linux内核中链表代码分析---list.h头文件分析(二) 16年2月28日16 ...
- Linux网络设计之实现io_uring用户态接口
io_uring场景 io_uring和epoll的区别 io_uring 与epoll性能比较 安装rust_echo_bench测试工具 测试比较 实现封装io_uring用户态文件读写接口 系统 ...
- Linux内核笔记--内存管理之用户态进程内存分配
内核版本:linux-2.6.11 Linux在加载一个可执行程序的时候做了种种复杂的工作,内存分配是其中非常重要的一环,作为一个linux程序员必然会想要知道这个过程到底是怎么样的,内核源码会告诉你 ...
- Linux如何查看内核版本并安装内核头文件linux-headers-generic
linux内核的头文件一般是这样的格式:linux-headers-5.13.0-01-generic,当然根据你的查询方式不同,写法各异. 一般的检查指令 下面我列举一些快速查询linux的内核版本 ...
- linux c之c语言符合标准的头文件和linux常用头文件
1.C语言符合标准的头文件 #include <assert.h> //设定插入点 #include <ctype.h> //字符处理 #include <errno.h ...
- linux怎么添加头文件目录下,linux下编写c++,include的那些头文件在什么地方?
炎炎设计 C/C++程序在linux下被编译和连接时,GCC/G++会查找系统默认的include和link的路径,以及自己在编译命令中指定的路径.自己指定的路径就不说了,这里说明一下系统自动搜索的路 ...
- linux cpp标准库,标准库以及标准头文件
源文件通过编译可以生成目标文件(例如 GCC 下的 .o 和 Visual Studio 下的 .obj),并提供一个头文件向外暴露接口,除了保护版权,还可以将散乱的文件打包,便于发布和使用. 实际上 ...
最新文章
- python exec
- 使用synchronized修饰静态方法和非静态方法有什么区别
- linux 电源管理 regulator,Linux内核电源管理综述
- 二叉查找树转换成有序的双向链表
- Android系统匿名共享内存Ashmem(Anonymous Shared Memory)在进程间共享的原理分析
- C#验证控件使用方法及常用正则表达式例析转
- 读读objc源码(二):weak类型指针的实现
- php cii订单导出,使用 kingcms.php 建立一个留言本【附模型代码】
- 微课|中学生可以这样学Python(例9.1):Excel导入SQLite(2)
- C++ 构造函数与析构函数
- 如何解决高并发,秒杀问题 1
- 蓝桥杯2016年第七届JavaC组国赛第一题-平方末尾
- 阿里云张献涛:2021 弹性计算发生了哪些变化
- java string通配符_java通配符
- 贸易合规服务市场现状研究分析报告 -
- Java代码分析器(一): JDT入门
- Eclipse 照亮Java众生
- J2EE开发全程实录
- 100-days: thirty-two
- php ses 发送邮件,使用PHP SDK从Amazon SES发送HTML邮件
热门文章
- ubuntu系统怎么安装ssh服务器配置,如何在Ubuntu 20.04 LTS上安装SSH服务器
- python库缺少pkg_resource_ImportError: No module named pkg_resources解决方案
- 数字图像处理——第九章 形态学图像处理
- 光耦p621引脚图_开关电源中光耦电路的设计与优点
- CUDA make_float3和make_float4
- Node.js开发WEB项目后端接口API,基于mysql5.7数据库(小试牛刀)
- 在Ubuntu 16.04.5 LTS上利用python中的PIL模块压缩一百多兆的单张图片实操
- 在CentOS 6.9 x86_64上开启nginx 1.12.2的proxy_cache缓存配置
- leetcode-300 最长上升子序列
- Android.mk文件语法规范