linux源码分析-pipe管道

94 阅读1分钟

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);
}