- 论坛徽章:
- 0
|
在看linux文件系统的源代码的时候,如下:*(struct d_inode *)inode =
((struct d_inode *)bh->b_data)
[(inode->i_num-1)%INODES_PER_BLOCK]; |
把一个char* 强制转化为struct d_indoe * 类型的,后面加上[] 什么意思。
字符串和结构体可以进行转化?
struct m_inode * inode;
bh->data 是char* 类型的
//磁盘上的inode
struct d_inode {
unsigned short i_mode; //文件类型和属性
unsigned short i_uid; //uid
unsigned long i_size; //size,文件大小,在pipe里面是pipe使用的page的addr
unsigned long i_time; //修改时间
unsigned char i_gid; // gid
unsigned char i_nlinks;// 链接数
unsigned short i_zone[9];/*直接(0-6)、间接(7)、或双重间接( 逻辑块号*/
};
//内存中的inode
struct m_inode {
unsigned short i_mode;
unsigned short i_uid;
unsigned long i_size;
unsigned long i_mtime;
unsigned char i_gid;
unsigned char i_nlinks;
unsigned short i_zone[9];
/* these are in memory also */
struct task_struct * i_wait; //等待该节点的任务
unsigned long i_atime; //最后访问时间
unsigned long i_ctime; //最后修改时间
unsigned short i_dev; //所在的设备号
unsigned short i_num; //i节点号
unsigned short i_count; //i节点使用的次数
unsigned char i_lock; //锁定标志
unsigned char i_dirt; //已修改(脏)数据
unsigned char i_pipe; //管道标志
unsigned char i_mount; //安装标志
unsigned char i_seek; //搜索标志(lseek)
unsigned char i_update; //更新标志
}; |
|