概述
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预编译时会检查参数有效性。
最后
以上就是灵巧月亮为你收集整理的Linux内核完全注释(0.11版)DAY2的全部内容,希望文章能够帮你解决Linux内核完全注释(0.11版)DAY2所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复