LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: sybaselu

file_operation这个关键的数据结构在那个头文件中?

[复制链接]
 楼主| 发表于 2004-8-13 17:52:19 | 显示全部楼层
1:
  编译应用程序的头文件中的open(0, ioctl(), read()的系统调用是用/usr/include/linux/下面的xxx.h文件,这里的linux/xxx.h同内核源码中linux-2.6.6/include/linux/xxx.h 有何区别,我看过, 他们的源码大通小异,他们是如何联系的?
2:
  应用中的open()---------->与虚拟文件系统的vfs_open()---------->以及内核源码中经过glibc封装的_syscall()中的open()--------->及具体文件如;ext2_open()的关系?
3:
  linux中的文件有:----->普通文件
                  ------>设备文件(快和字符)
                  ------>fifo管道
                  ------->等其他文件
他们的打开应该是用不同的open()吧?
发表于 2005-4-6 16:12:31 | 显示全部楼层
好文章
回复 支持 反对

使用道具 举报

发表于 2008-8-14 13:54:00 | 显示全部楼层
Post by home_king;752976
设备驱动程序的操作函数注册过程(初始化模块)


图很好,Linux2.6发展的趋势有意淡化register_chrdev()这个普遍使用

Linux2.6的驱动注册本身使用kobj,register_chrdev()等只是一个封装

块设备的注册函数在linux2.6已经有了改变
回复 支持 反对

使用道具 举报

发表于 2008-8-14 14:07:24 | 显示全部楼层
Post by sybaselu;774669
1:
  编译应用程序的头文件中的open(0, ioctl(), read()的系统调用是用/usr/include/linux/下面的xxx.h文件,这里的linux/xxx.h同内核源码中linux-2.6.6/include/linux/xxx.h 有何区别,我看过, 他们的源码大通小异,他们是如何联系的?
2:
  应用中的open()---------->与虚拟文件系统的vfs_open()---------->以及内核源码中经过glibc封装的_syscall()中的open()--------->及具体文件如;ext2_open()的关系?
3:
  linux中的文件有:----->普通文件
                  ------>设备文件(快和字符)
                  ------>fifo管道
                  ------->等其他文件
他们的打开应该是用不同的open()吧?


glicbc的open只有一个,对应的实现就是系统调用sys_open。文件系统mount的过程比较复杂,但是一旦mount上,open等操作就和文件系统没有关系了。

Linux内核能看到只是inode,事实上通过filp_open调用将得到内核的数据结构struct file,然后再在struct file找到ops为以后的读写操作实现
回复 支持 反对

使用道具 举报

发表于 2011-7-7 11:19:48 | 显示全部楼层
好贴!!!!!!

home_king兄!我要给你个YES!!!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表