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 [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的uapi文件夹,【linux】Linux kernel uapi header file(用户态头文件)相关推荐

  1. 【linux】Linux kernel uapi header file(用户态头文件)

    uapi目录的创建原因 Linux在3.7以后把很多header file移到 include/uapi或是arch/xxxx/include/uapi下,为了解决include recursive( ...

  2. 文件夹拷贝,判断,生成当前用户权限的文件夹

    使用到的API: CreateDirectory:创建目录 FindFirstFile,FindNextFile 查找文件 RemoveDirectory:删除空目录 GetFileAttribute ...

  3. Windows中文件夹与linux中目录的区别

    如果你最开始使用的是 Windows 电脑,你很可能会使用"文件夹folder"这个术语.但当你换到 Linux 时,你会发现文件夹通常被称为"目录directory&q ...

  4. linux创建目录无权限,linux下文件夹权限 linux 创建文件夹没有权限

    linux 给所有文件下文件加权限 更改文件用户组.使用命令chgrp,命令如下. 更改文件所有者.使用命令chown. chown命令可以同时修改所有者和用户组名称(即拥有chgrp的功能),命令如 ...

  5. 终端打开文件夹(Window/Linux/macOS)

    终端打开文件夹(Window/Linux/macOS) Winodw explorer path Linux nautilus path macOS open path 注意Window端文件路径里面 ...

  6. linux查找以c开头的的文件夹,【Linux】 find指令(文件查找)

    每一种操作系统都有成千上万的文件组成,对于linux这样"一切皆文件"的操作系统来说更不例外,大家应该都能很轻松使用windows下的文件查找功能,但是对linux这一功能可能并不 ...

  7. Linux下文件和文件夹同名冲突,为什么出现两个一模一样的同名文件或文件夹?

    为什么出现两个一模一样的同名文件或文件夹?如何辨别真伪?相信很多网友都碰到这样的怪现象吧,下面我就为大家介绍一下造成这种现象的原因,不懂的朋友可以过来参考一下,来看看吧 你是否遇到过这种怪现象:在同一 ...

  8. python遍历目录压缩文件夹然后在发送邮件_python目录操作之python遍历文件夹后将结果存储为xml...

    Linux服务器有CentOS.Fedora等,都预先安装了Python,版本从2.4到2.5不等,而Windows类型的服务器也多数安装了Python,因此只要在本机写好一个脚本,上传到对应机器,在 ...

  9. Python 连接FTP服务器并实现文件夹下载实例演示,python区分ftp目录下文件和文件夹方法,ftp目录下包含中文名问题处理

    Python 连接 FTP 服务器并实现文件夹下载实例演示 第一章:连接 FTP 服务器并实现文件夹下载 ① 连接 FTP 服务器 ② 进入指定目录并显示文件信息 ③ 区分文件和文件夹名 ④ 文件夹名 ...

  10. 怎样清除手机中的html文件夹,怎么彻底清除手机APP卸载后的残留文件夹 能删与不能删文件名...

    ­ 手机里的文件和手机下载了app之后,即使卸载,也很容易有垃圾残留,而且占用的空间还挺多,但是根本不知道哪些是垃圾,要怎么清除这些垃圾? ­ 一般清理垃圾软件,如360,腾讯管家等可以清除手机缓存, ...

最新文章

  1. python将二维列表内容写入和读取.csv文件
  2. 如何在Vim中复制到剪贴板?
  3. 使用swipemenulistview实现列表的左右滑动
  4. 数据采集中的采样率、缓冲区大小以及,每通道采样数之间的关系
  5. 什么是1st tier conference?
  6. Wildfly 8.0通过其JAXRS 2.0实现提供了无缝的JSON支持。
  7. 微信小程序云数据库带换行的文本保存和获取
  8. java编程编一个小系统_如何编写一个java学生信息管理系统?
  9. Java基础Arrays类
  10. QML Item定位器 Anchor
  11. 00 - JavaScript 简介
  12. roundcube db.inc.php,开源电子邮件系统(Roundcube Webmail)
  13. 国产linux系统 深度6,国产Linux系统深度Deepin体验
  14. 如何利用官方SDK文件来辅助开发?
  15. python训练好的图片验证_Python图片验证码降噪处理实例
  16. android手机如何隐藏应用程序,三星手机怎么隐藏图标/软件 三星隐藏应用程序设置方法...
  17. 学习FPGA绝佳网站推荐
  18. 如何用SPSS计算个人BMI值?
  19. 【网络】无线相关名词解释:RSSI、RSRP、SNR
  20. 如何构建可持续的ChatGPT高性能服务器端架构?

热门文章

  1. ASP.NET MVC 3和Razor中的@helper
  2. 使用DPM2007来保护企业数据
  3. Layer 7 过滤 (官网介绍)
  4. 如何在JPG或BMP图片上显示输入的订单数据内容,并在报表打印时显示出来,后台数据库是SQL SERVER 2000 ,先谢了.高分!...
  5. 浅谈 Mybatis 中的 ${ } 和 #{ }的区别
  6. 联想万全服务器告警信息在哪里看,华为网络设备查看告警信息
  7. 关于如何理解链表结构体指针引用LinkNode * L的问题
  8. pyppeteer-比 selenium 更高效的爬虫利器
  9. python提供了什么函数进行格式化输出_python print函数格式化输出
  10. gitee java pdf转图片_openOffice word转pdf,pdf转图片优化版