linux_UAPI_转
问题描述
从3.5开始,Linux Kernel 里多了一个 uapi 文件夹,里面放了很多 Linux Kernel 各个模块的头文件。如果是第一次碰到,可能会对这个不是很了解。
问题分析
Linux Kernel 中新增的这些 uapi 头文件,其实都是来自于各个模块原先的头文件,最先是由 David Howells 提出来的。uapi 只是把内核用到的头文件和用户态用到的头文件分开。
解决方案
在 3.5 之前,Linux Kernel 的头文件一般是这样的:
/* Header comments (copyright, etc.) */ #ifndef _XXXXXX_H
#define _XXXXXX_H [User-space definitions] #ifdef __KERNEL__ [Kernel-space definitions] #endif /* __KERNEL__ */ [User-space definitions] #endif
而在 3.5 之后,这样一个头文件就会被分为两个:
.filename.h
/* Header comments (copyright, etc.) */
#ifndef XXXX_H
#define XXXX_H #include <include/uapi/path/to/header.h> [Kernel-space definitions] #endif
./uapi/filename.h
/* Header comments (copyright, etc.) */ #ifndef _UAPI_XXXX_H
#define _UAPI_XXXX_H [User-space definitions] #endif
这样做有什么好处呢?一个是解决 Linux Kernel 里的交叉引用,另外一个就是方便用户态的开发者,可以简单的查看 uapi 里的代码变化来确定 Linux Kernel 是否改变了系统 API。
参考:linux源码中的uapi的来源include recursion
linux_UAPI_转的更多相关文章
随机推荐
- message 弹出窗口
import javax.swing.JOptionPane;public class gong { public static void main(String [] args){ ...
- HDUOJ----John
John Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Submis ...
- 程序开发使用地图API时需注意的问题(转)
最近在做一个基于地点提醒的移动应用,当初考虑大家都心知肚明的原因,谨慎的选择了百度地图,现在想想其实完全没有必要,好的应用本来就不分国界的,最后可能还是得换回Google地图.毕竟Google地图在技 ...
- 玩转Masonry JS库来实现瀑布流Web效果
工作项目中需要制作个Mobile上的Web App的展示,方便快捷访问和评价反馈.在展示页面能看到应用展示图,点击进入Web应用.我不是前端开发者,对HTML, CSS, JS这三剑客仅仅是略知一二. ...
- JS取date的前一天时间
在javascript中取date的前一天时间: new Date(new Date()-24*60*60*1000),//取前一天的时间
- Spring MVC POST中文乱码解决方案
spring Web MVC框架提供了org.springframework.web.filter.CharacterEncodingFilter用于解决POST方式造成的中文乱码问题,具体配置如下: ...
- windows下使用mongodb
********************************************************************* ERROR: dbpath (\data\db\) does ...
- Python学习笔记011——内置函数exec()
1 描述 把一个字符串当成语句执行 exec() 执行储存在字符串或文件中的 Python 语句,相比于 eval() , exec() 可以执行更复杂的 Python 代码. exec函数和ev ...
- AOV网与拓扑排序
在一个表示工程的有向图中,用顶点表示活动,用弧表示活动之间的优先关系,这样的有向图为顶点表示活动的网,我们称之为AOV网(Activity on Vextex Network).AOV网中的弧表示活动 ...
- 三十道linux内核面试题
1. Linux中主要有哪几种内核锁? Linux的同步机制从2.0到2.6以来不断发展完善.从最初的原子操作,到后来的信号量,从大内核锁到今天的自旋锁.这些同步机制的发展伴随Linux从单处理器 ...