Linux Kernel UAPI
2016-09-13 15:11
309 查看
转自http://tinylab.org/linux-kernel-uapi/
问题描述
从3.5开始,Linux Kernel 里多了一个 uapi 文件夹,里面放了很多 Linux Kernel 各个模块的头文件。如果是第一次碰到,可能会对这个不是很了解。
问题分析
Linux Kernel 中新增的这些 uapi 头文件,其实都是来自于各个模块原先的头文件,最先是由 David Howells 提出来的。uapi 只是把内核用到的头文件和用户态用到的头文件分开。
解决方案
在 3.5 之前,Linux Kernel 的头文件一般是这样的:
而在 3.5 之后,这样一个头文件就会被分为两个:
这样做有什么好处呢?一个是解决 Linux Kernel 里的交叉引用,另外一个就是方便用户态的开发者,可以简单的查看 uapi 里的代码变化来确定 Linux Kernel 是否改变了系统 API。
转自http://tinylab.org/linux-kernel-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-USB Gadget : Part 2: USB Gadget API for Linux (From Linux kernel 2.6.25.10)
- Linux Kernel API (2.6)
- Linux Kernel API man (ubuntu)
- Linux 内核API文档(The Linux Kernel API)
- Linux Kernel API
- The Linux Kernel API
- linux kernel API and google android compile guide
- Linux kernel API的查看
- 【linux】Linux kernel uapi header file(用户态头文件)
- The Linux Kernel API
- The Linux Kernel API
- linux kernel api(好东西)
- LINUX GPIO Kernel/User API
- The Linux Kernel API
- The Linux API / Kernel API
- 查阅linux kernel api
- The Linux Kernel API
- Linux Kernel devm_* API源码分析
- Memory Allocation API In Linux Kernel && Linux Userspace、kmalloc vmalloc Difference、Kernel Large Section Memory Allocation
- Linux kernel uapi header file