下面看一下上层应用open() 调用系统调用函数的过程 对于一个字符设备文件, 其inode->i_cdev 指向字符驱动对象cdev, 如果i_cdev为 NULL ,则说明该设备文件没有被打开. 由于多个设备可以共用同一个驱动程序.所以,通过字符设备的inode 中的i_devices 和 cdev中的list组成一个链表 首先,系统调用open打开一个字符设备...
i_data:表示被inode读写的页面 i_dquot:inode的磁盘限额 关于磁盘限额:在多任务环境下,对于每个用户的磁盘使用限制是必须的,起到一个公平性作用。 磁盘限额分为两种:block限额和inode限额,而且对于一个特文件系统来说,使用的限额机制都是一样的,所以限额的操作函数 放在super_block中就OK! i_devices:设备链表。...
512structadfs_inode_info adfs_i; 513structqnx4_inode_info qnx4_i; 514structreiserfs_inode_info reiserfs_i; 515structbfs_inode_info bfs_i; 516structudf_inode_info udf_i; 517structncp_inode_info ncpfs_i; 518structproc_inode_info proc_i; 519structsocket socket_i; 520structusbdev_inode_inf...
struct file_lock_context *i_flctx; struct address_space i_data; struct list_head i_devices; union { struct pipe_inode_info *i_pipe; struct block_device *i_bdev; struct cdev *i_cdev; }; __u32 i_generation; #ifdef CONFIG_FSNOTIFY __u32 i_fsnotify_mask;/* all events this inode c...
--602-->i_mode表示访问权限控制 --604-->UID --605-->GID --606-->i_flags文件系统标志 --630-->硬链接数计数 --635-->i_size以字节为单位的文件大小 --636-->最后access时间 --637-->最后modify时间 --638-->最后change时间 --669-->i_dentry; //目录项链表 ...
>i_op->default_file_ops */ void (*free_inode)(struct inode *); }; struct file_lock_context *i_flctx; struct address_space i_data; struct list_head i_devices; union { struct pipe_inode_info *i_pipe; struct cdev *i_cdev; char *i_link; unsigned i_dir_seq; }; __u32 i_...
i_dev:如果inode代表设备,那么就是设备号 i_mode:文件的类型和访问权限 i_nlink:与该节点建立链接的文件数(硬链接数) i_uid:文件拥有者标号 i_gid:文件所在组标号 i_rdev:实际的设备标识 注意i_dev和i_rdev之间区别:如果是普通的文件,例如磁盘文件,存储在某块磁盘上,那么i_dev代表的就是保存这个文件的磁...
系统级别的 i-node 表:i-node 结构体记录了文件相关的信息,包括文件长度,文件所在设备,文件物理位置,创建、修改和更新时间等,“ls -i” 命令可以查看文件 i-node 节点。 进程在Linux内核中是由结构体task_struct维护,进程打开的所有文件描述符都在进程维护的结构体task_struct的files变量中维护: ...
union {conststructfile_operations *i_fop;/*former ->i_op->default_file_ops*/void(*free_inode)(structinode *); };structfile_lock_context *i_flctx;structaddress_space i_data;structlist_head i_devices; union {structpipe_inode_info *i_pipe;structcdev *i_cdev;char*i_link; ...
471 wait_queue_head_t i_wait; 472struct file_lock *i_flock; 473struct address_space *i_mapping; 474struct address_space i_data; 475struct dquot *i_dquot[MAXQUOTAS]; 476/* These three should probably be a union */ 477struct list_head i_devices; ...