yaffs基础第一篇——yaffs中的核心数据结构

本文介绍了yaffs文件系统的核心数据结构,包括yaffs_DeviceStruct、yaffs_ObjectStruct和yaffs_ObjectHeader等。这些结构体构成了yaffs与硬件交互的基础,并用于维护文件系统的组织。yaffs_DeviceStruct包含nandflash的属性和操作函数,yaffs_ObjectStruct代表逻辑文件信息,而yaffs_ObjectHeader则存储物理文件的元数据。yaffs通过这些结构体与nandflash的硬件特性相结合,实现了高效的文件系统管理。
摘要由CSDN通过智能技术生成

一个比较大的工程,最最核心的往往是数据结构体的定义,这是我最近一段时间啃yaffs啃出来的体会,一个复杂的函数往往是因为里面包含了各类结构体,结构体成员函数之间的不断转换,因此想要理解好一个大型的软件,一定要深刻的理解它的核心结构体。

话说有一天和trio一起吃饭,trio老师谈到他看代码的习惯,说往往是先不看.c文件,先把头文件仔细读一遍,这点真是深刻啊!

 

我的理解核心数据就像整个代码的经络一样,别看这个程序有多少多少万行代码,它本质上就是在对这些结构体进行操作。废话少说,我们来看一下yaffs的核心结构体。

 

Yaffs的主要的结构体在yaffs_guts.h这个文件中,核心的接头体有:

struct yaffs_DeviceStruct

 

struct  yaffs_ObjectStruct

 

Struct yaffs_ObjectHeader

 

//Struct yaffs_blockinfo

 

Struct yaffs_spare

 

Struct yaffs_tags

 

//Struct yaffs_chunkcache

 

还有一个比较重要的结构体在yaffs_fs.h这个文件中

 

Struct  yaffsfs_Handle

 

当然还有其他很多结构体,这里先把主要的列在这儿,我准备从物理上和逻辑上的区分来说明这些结构体的作用,请看下面这张表。

结构体名字

属性(物理,逻辑)

作用

yaffs_DeviceStruct

物理

是描述了整个挂载的设备(大小,起始地址,读写操作的函数等等)

yaffs_spare

物理

描述了nandflash每一页后的16个字节

yaffs_ObjectHeader

物理,逻辑

存在于nandflash上,这是物理特性,它的内容是描述了一个文件信息,这是逻辑特性

yaffs_ObjectStruct

逻辑

描述了一个文件的具体信息

yaffsfs_Handle

逻辑

描述了访问文件的信息,读写特性,文件偏移量,文件的yaffs_objectstruct

yaffs_tags

逻辑

它其实是yaffs_spare的一部分,yaffs利用tags中的内容对yaffs进行组织

 

因此可以这么来说实际和nandflash的硬件相关的结构体有三个,其他的结构体都是只是为了维护yaffs的组织目录而在内存中形成的。所以,

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值