曲径通幽论坛

标题: inode 结构体 [打印本页]

作者: beyes    时间: 2009-8-26 17:31
标题: inode 结构体
内核在内部用 inode 结构体用来表示文件。因此,它和 file structure 用来表示一个打开了的文件描述符并不相同。对于一个文件,可能会有多个 file structure 对应着多个已打开的多个文件描述符,但是这都只能指向同一个 inode 结构。

inode 结构里包含大量关于文件的信息,但一般而言,对于我们编写驱动代码,我们仅对这个结构中的两个域感兴趣:

dev_t i_rdev;
对于表示设备文件的众多结点(inode),此域包含了实际的设备号。

struct cdev *i_cdev;
struct dev 是内核内部用来表示字符设备的结构;当 inode 指向的是一个字符型设备时,这个域就包含了一个指向这个结构的指针。

为了增强可移植性,用以下两个宏从 inode 中获取主设备号和次设备号:
unsigned int iminor(struct inode *inode);
unsigned int imajor(struct inode *inode);

在 2.5 内核里,由于 i_rdev 类型的改变,破坏了许多驱动。所以,为了避免下次再改变带来的麻烦,建议使用上面两个宏,而不是直接对 i_rdev 进行修改。




欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2