1、struct file

这个结构体定义在  linuxsource/include/linux/fs.h 中第960行左右

具体成员如下:

 struct file {
/*
* fu_list becomes invalid after file_free is called and queued via
* fu_rcuhead for RCU freeing
*/
union {
struct list_head fu_list;
struct rcu_head fu_rcuhead;
} f_u;
struct path f_path;
#define f_dentry f_path.dentry
#define f_vfsmnt f_path.mnt
const struct file_operations *f_op;
spinlock_t f_lock; /* f_ep_links, f_flags, no IRQ */
#ifdef CONFIG_SMP
int f_sb_list_cpu;
#endif
atomic_long_t f_count;
unsigned int f_flags;
fmode_t f_mode;
loff_t f_pos;
struct fown_struct f_owner;
const struct cred *f_cred;
struct file_ra_state f_ra; u64 f_version;
#ifdef CONFIG_SECURITY
void *f_security;
#endif
/* needed for tty driver, and maybe others */
void *private_data; #ifdef CONFIG_EPOLL
/* Used by fs/eventpoll.c to link all the hooks to this file */
struct list_head f_ep_links;
#endif /* #ifdef CONFIG_EPOLL */
struct address_space *f_mapping;
#ifdef CONFIG_DEBUG_WRITECOUNT
unsigned long f_mnt_write_state;
#endif
};

从内核来看,每一个打开的文件都需要有一个file结构体来描述它

具体查看

http://blog.csdn.net/wangchaoxjtuse/article/details/6036684

2、struct inode

  索引节点对象由inode结构体表示,定义文件在linux/fs.h中。

linux 中每一个文件都需要有一个inode节点来描述

 

 struct inode {
  struct hlist_node i_hash; 哈希表
  struct list_head i_list; 索引节点链表
  struct list_head i_dentry; 目录项链表
  unsigned long i_ino; 节点号
  atomic_t i_count; 引用记数
  umode_t i_mode; 访问权限控制
  unsigned int i_nlink; 硬链接数
  uid_t i_uid; 使用者id
  gid_t i_gid; 使用者id组
  kdev_t i_rdev; 实设备标识符
  loff_t i_size; 以字节为单位的文件大小
  struct timespec i_atime; 最后访问时间
  struct timespec i_mtime; 最后修改(modify)时间
  struct timespec i_ctime; 最后改变(change)时间
  unsigned int i_blkbits; 以位为单位的块大小
  unsigned long i_blksize; 以字节为单位的块大小
  unsigned long i_version; 版本号
  unsigned long i_blocks; 文件的块数
  unsigned short i_bytes; 使用的字节数
  spinlock_t i_lock; 自旋锁
  struct rw_semaphore i_alloc_sem; 索引节点信号量
  struct inode_operations *i_op; 索引节点操作表
  struct file_operations *i_fop; 默认的索引节点操作
  struct super_block *i_sb; 相关的超级块
  struct file_lock *i_flock; 文件锁链表
  struct address_space *i_mapping; 相关的地址映射
  struct address_space i_data; 设备地址映射
  struct dquot *i_dquot[MAXQUOTAS];节点的磁盘限额
  struct list_head i_devices; 块设备链表
  struct pipe_inode_info *i_pipe; 管道信息
  struct block_device *i_bdev; 块设备驱动
  unsigned long i_dnotify_mask;目录通知掩码
  struct dnotify_struct *i_dnotify; 目录通知
  unsigned long i_state; 状态标志
  unsigned long dirtied_when;首次修改时间
  unsigned int i_flags; 文件系统标志
  unsigned char i_sock; 套接字
  atomic_t i_writecount; 写者记数
  void *i_security; 安全模块
  __u32 i_generation; 索引节点版本号
  union {
  void *generic_ip;文件特殊信息
  } u;
  };

1、Linux驱动重要的数据结构的更多相关文章

  1. Linux驱动学习之常用的模块操作命令

    1.常用的模块操作命令 (1)lsmod(list module,将模块列表显示),功能是打印出当前内核中已经安装的模块列表 (2)insmod(install module,安装模块),功能是向当前 ...

  2. Linux驱动学习步骤(转载)

    1. 学会写简单的makefile 2. 编一应用程序,可以用makefile跑起来 3. 学会写驱动的makefile 4. 写一简单char驱动,makefile编译通过,可以insmod, ls ...

  3. 迅为4412开发板Linux驱动教程——总线_设备_驱动注册流程详解

    本文转自:http://www.topeetboard.com 视频下载地址: 驱动注册:http://pan.baidu.com/s/1i34HcDB 设备注册:http://pan.baidu.c ...

  4. 编写linux驱动所用到的头文件(转)

    转自:http://blog.csdn.net/lufeiop02/article/details/6448497 关于linux驱动(应用)程序头文件使用 收藏 驱动程序: #include < ...

  5. linux驱动之I2C

    include/linux/i2c.h struct i2c_msg;struct i2c_algorithm;struct i2c_adapter;struct i2c_client;struct ...

  6. linux驱动面试题目汇总

    http://blog.csdn.net/blueice8601/article/details/7666427 1.linux驱动分类 2.信号量与自旋锁 3.platform总线设备及总线设备如何 ...

  7. Linux驱动开发学习的一些必要步骤

      1. 学会写简单的makefile 2. 编一应用程序,可以用makefile跑起来 3. 学会写驱动的makefile 4. 写一简单char驱动,makefile编译通过,可以insmod, ...

  8. 【linux驱动】linux驱动总览

    欢迎转载,转载时需保留作者信息,谢谢. 邮箱:tangzhongp@163.com 博客园地址:http://www.cnblogs.com/embedded-tzp Csdn博客地址:http:// ...

  9. linux驱动之中断处理过程C程序部分

    当发生中断之后,linux系统在汇编阶段经过一系列跳转,最终跳转到asm_do_IRQ()函数,开始C程序阶段的处理.在汇编阶段,程序已经计算出发生中断的中断号irq,这个关键参数最终传递给asm_d ...

随机推荐

  1. javascript arguments解释,实现可变长参数。

    在C#中,有可变长参数params[],但是在js中,如何实现这种可变参数呢? 一.可变长参数 arguments是非常好的解决方法,一直不知道javascript有这个东西. 先来看看应用场景,使用 ...

  2. Windows IIS 安装配置PHP环境

    一. 概述 二.安装PHP 1.到php官网下载最新版PHP http://windows.php.net/download 三.配置IIS PHP环境

  3. Windows程序设再读笔记01-起步

    1.从程序员角度看,统一的界面意味着编程人员可以使用windows自带的例程来构建许多的功能,例如菜单,对话框等.只用几行代码就可以实现很多复杂的功能.但是这同时也增加了一些限制,使得做出一个个性化的 ...

  4. Linux下apache+phppgadmin+postgresql安装配置

    Linux下apache+phppgadmin+postgresql安装配置 操作系统:CentOS 安装包:httpd(首选yum), php(包括php以及php-pgsql,php-mbstri ...

  5. 3、python,read(),readlines()和readline()

    我们谈到"文本处理"时,我们通常是指处理的内容. Python 对文件对象的操作提供了三个"读"方法: .read()..readline() 和 .readl ...

  6. android 开发 程序中下载安装APK文件 问题汇总 解析程序包时出现问题

    1 若把APK文件保存到应用程序的files目录下,则一定注意保存时使用 FileOutputStream os = openFileOutput(fileName, MODE_WORLD_READA ...

  7. WinForm添加快捷键

    1.    WinForm下给窗体和按钮添加快捷键 设置Enter键要执行的动作:设置FORM的 AcceptButton属性为指定的button按钮. 设置ESC键要执行的动作:设置FORM的Cac ...

  8. Net力软快速信息化系统开发框架 + 开发手册+数据库说明

    源码目录结构说明LeaRun.Cache –缓存层LeaRun.Resource –本地语言LeaRun.Utilities –公共类库LeaRun.DataAccess –数据库访问核心组件LeaR ...

  9. js 中闭包的概念

  10. asp.net GDI+绘制五边形

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...