: .
UBIFS中的重要的结构体
用leeming的话来说,一个大的工程中,最最核心的往往是数据结构体的定义。所以看 代码不急着看c文件,而是主要看 document和h文件,来理解设计者的思路,这样才能走
对路。
1. struct ubi_device
UBI中对于一个 UBI设备的抽象是以 struct ubi_device来定义,其中包括了该 UBI设备 的各种信息。
struct ubi_device {
struct cdev cdev;
struct device dev;
int ubi_num;//UBI设备的标号,在 ubiattach用户程序时以-d选项来输入
char ubi_ name[sizeof(UBI_NAME_STR)+5];//ubi 设备的名称
int vol_count;〃在该UBI设备中有多少个 volume
struct ubi_volume *volumes[UBI_MAX_VOLUMES+UBI」N T_VOL_COUNT];
spinl ock_t volumes_lock;
int ref_co unt;
int image_seq;
int rsvd_pebs;//保留的 LEB 数目
int avail_pebs;// 可用的 LEB 数目
int beb_rsvd_pebs;//为坏块处理而保留的 LEB数目
int beb_rsvd_level;//为坏块处理而保留的 LEB的正常数目
int autoresize_vol_id;
int vtbl_slots;
int vtbl_size;//volume 表的大小(bytes)
struct ubi_vtbl_record *vtbl;// 内存中 volume 表的拷贝
struct mutex device_mutex;
int max_ec;//最大的 erase counter
/* Note, mean_ec is not updated run-time - should be fixed */
int mean_ec;//平均 erase counter
/* EBA sub-system's stuff */
un sig ned long long global_s qnum;
spinl ock_t ltree_lock;
struct rb_root ltree;
struct mutex alc_mutex;
/* Wear-leveli ng sub-system's stuff */
struct rb_root used;// 一个红黑树,其中是已用的 blcok
struct rb_root erron eous;// RB-tree of erron eous used physical eraseblocks
struct rb_root free;//红黑树的根,其中是没有用到的 block
struct rb_root scrub;// 需要擦除的 blcok
struct list_hea
UBIS分析:重要结构体 来自淘豆网m.daumloan.com转载请标明出处.