Linux内核完全注释(0.11版)DAY2

fs目录是文件系统实现程序的目录,包含17个C语言程序。这些程序可分为四个部分:高速缓冲区管理、底层文件操作、文件数据访问和文件高层函数。核心文件buffer.c是高速缓冲区程序,因为文件系统数据访问都需要首先读取到高速缓冲区。


                                                 图为fs目录中各程序函数之间引用关系

头文件主目录include

头文件目录总共有32个.号文件。其中include/主目录下有13个头文件,其他头文件则存放在asm(4个)、linux(10个)和sys(5个)三个子目录

include/主目录下头文件主要提供内核和用户程序的使用;sam/子目录用于主要存放计算机硬件体系结构相关的头文件;linux/子目录用于存放linux内核专用头文件;sys/子目录用于存放一些文件状态、进程、系统数据类型等头文件

Linux内核源代码情景分析(上)

inline:内联函数,因为gcc从C++中吸收了很多语法,因此gcc既是C编译又是C++编译,其中inline就是C++语法。inline函数与#define类似,e.g.

#include <stdio.h>
//函数定义为inline即:内联函数
inline char* dbtest(int a) { return (i % 2 > 0) ? "奇" : "偶"; } int main() { int i = 0; for (i=1; i < 100; i++) { printf("i:%d 奇偶性:%s /n", i, dbtest(i)); } }

这里用inline就将a%2可以写为i%2,减少了栈空间的消耗(临时变量),但inline不能用在结构复杂的函数里面,因为这会大量消耗内存空间,并且inline是非强制的只是建议,编译器会自动判别采用不。详见这篇博客

#define与inline的区别,当用#define进行宏定义时预编译时只是进行的简单符号替换,并不具有检查参数有效性。而inline预编译时会检查参数有效性。

猜你喜欢

转载自blog.csdn.net/qq_31869107/article/details/80564198