pipe管道内核源码分析
1.代码中出现的语法层面分析
- 1.__cplusplus
#ifdef __cplusplus //该字段是c++编译器中特有的,用来区分编译器是gcc还是g++
#define CPP_ASMLINKAGE extern "C"
#else
#define CPP_ASMLINKAGE
#endif
- 2.SYSCALL_DEFINE*宏定义介绍
表示宏内定义的函数为系统调用,*处所写的数字代表的是该系统调用所使用的参数个数。
系统调用的具体用法请看第八章->自定义系统调用。
-
3.fs_initcall(init_pipe_fs);
给系统内核添加一个功能函数。 个人理解:文件系统类模块的初始化函数。
-
4.struct inode
inode是VFS使用的一个对象,用于存放内核在操作文件或目录时所需要的全部信息。
2.代码分析
- 1.入口函数
SYSCALL_DEFINE2(pipe2, int __user *, fildes, int, flags)
{
return do_pipe2(fildes, flags);
}
SYSCALL_DEFINE1(pipe, int __user *, fildes)
{
return do_pipe2(fildes, 0);
}