b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

struct hd_geometry_heal geometry_geometry expressions

电脑杂谈  发布时间:2017-05-21 09:08:57  来源:网络整理

kobject *holder_dir;

struct kobject *slave_dir;

struct timer_rand_state *random; //该指针指向的这个数据结构记录磁盘中断的定时;

//由内核内置的随机数发生器使用

int policy; //如果磁盘是只读的,则置为1(写操作禁止),否则为0

atomic_t sync_io;

unsigned long stamp; //统计磁盘队列使用情况的时间戳

int in_flight; //正在进行的I/O操作数

#ifdef CONFIG_SMP

struct disk_stats *dkstats;

#else

struct disk_stats dkstats; //统计每个CPU使用磁盘的情况

#endif

};

flags字段存放了关于磁盘的信息。其中最重要的标志是GENHD_FL_UP:如果设置它,那么磁盘将被初始化并可以使用。另一个相关的标志是GENHD_FL_REMOVABLE,如果是诸如软盘或光盘这样可移动的磁盘,那么就要设置该标志。

gendisk对象的fops字段指向一个表block_device_operations,该表为块设备的主要操作存放了几个定制的方法:

struct block_device_operations {

int (*open) (struct inode *, struct file *); //打开块设备文件

int (*release) (struct inode *, struct file *);//关闭对块设备文件的最后一个引用

int (*ioctl) (struct inode *, struct file *, unsigned, unsignedlong);

long (*unlocked_ioctl) (struct file *, unsigned, unsignedlong);

long (*compat_ioctl) (struct file *, unsigned, unsignedlong);

int (*direct_access) (struct block_device *, sector_t, unsignedlong *);

int (*media_changed) (struct gendisk *);

int (*revalidate_disk) (struct gendisk *); //检查块设备是否持有有效数据

int (*getgeo)(struct block_device *, struct hd_geometry *);

struct module *owner;

};

通常硬盘被划分成几个逻辑分区。每个块设备文件要么代表整个磁盘,要么代表磁盘中的某一个分区。struct hd_geometry例如,一个主设备号为3、次设备号为0的设备文件/dev/hda代表的可能是一个主EIDE磁盘;该磁盘中的前两个分区分别由设备文件/dev/hda1和/dev/hda2代表,它们的主设备号都是3,而次设备号分别为1和2。一般而言,磁盘中的分区是由连续的次设备号来区分的。

如果将一个磁盘分成了几个分区,那么其分区表保存在hd_struct结构的数组中,该数组的地址存放在gendisk对象的part字段中。通过磁盘内分区的相对索引对该数组进行索引。hd_struct描述符中的字段如下所示:

struct hd_struct {

sector_t start_sect; //磁盘中分区的起始扇区


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-48358-1.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    每日福利
    热点图片
    拼命载入中...